算法练习LeetCode初级算法之树】的更多相关文章

  在LeetCode初级算法的字符串专题中,共给出了九道题目,分别为:反转字符串,整数反转,字符串中的第一个唯一字符,有效的字母异位词,验证回文字符串,字符串转换整数,实现strStr(),报数,最长公共前缀.涉及到字符串的常规应用和一些算法技巧,依次记录如下. 反转字符串(344)   题目描述:编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出.不要给另外的数组分配额外的空间,你必须原地修改输入数组.使用 O(1) 的额外空间解决这一问题.可以假设…
二叉树的前序遍历 我的解法:利用递归,自底向下逐步添加到list,返回最终的前序遍历list class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list=new ArrayList<>(); if (root==null) { return list; } list.add(root.val); if (root.left!=null) { lis…
删除链表中的节点 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public void deleteNode(ListNode node) { node.val=node.next.val; node.next=node.next.next; }…
反转字符串 我的解法比较low,利用集合的工具类Collections.reverse反转,用时过长 class Solution { public void reverseString(char[] s) { List<Character> list=new ArrayList<>(); for (int i = 0; i < s.length; i++) { list.add(s[i]); } Collections.reverse(list); int i=0; for…
删除数组中的重复项 官方解答: 旋转数组 存在重复元素 只出现一次的数     官方解答:  同一个字符进行两次异或运算就会回到原来的值 两个数组的交集 II import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class LeetCode { public static void main(String[] args) { Solution solution = new Solut…
位1的个数 解法一: class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { return Integer.bitCount(n); } } 解法二: 记住一点,前面的零没用的不要!! class Solution { // you need to treat n as an unsigned value public int hammingWeight(int…
Fizz Buzz class Solution { public List<String> fizzBuzz(int n) { List<String> list=new LinkedList<>(); for (int i = 1; i <=n; i++) { if (i%3==0&&i%5==0) { list.add("FizzBuzz"); continue; }else if (i%3==0) { list.add(…
打乱数组 不断的让第一个与后面随机选择的数交换 class Solution { private int[] nums; private int[] initnums; public Solution(int[] nums) { this.nums=nums; this.initnums=Arrays.copyOf(nums, nums.length);//这里必须要复制,要指明对象 } /** Resets the array to its original configuration and…
爬楼梯:斐波那契数列 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 非递归解法 class Solution { public int climbStairs(int n) { if (n==1) { return 1; } if (n==2) { return 2; } int n1=1,n2=2; for (int i = 0; i <n-2; i++) { int m=n1+n2; n…
合并两个有序数组 class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { System.arraycopy(nums2, 0, nums1, m, n); Arrays.sort(nums1); } } 第一个错误的版本 递归解法:自己突然来了灵感写的,哈哈哈,递归真的很神奇! /* The isBadVersion API is defined in the parent class Versio…