- 博客(31)
- 收藏
- 关注
原创 LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal
public TreeNode buildTree(int[] preorder, int[] inorder) { return construct(0, preorder.length - 1, preorder, 0, inorder.length - 1, inorder); } public TreeNode construct(int preStart, int preEnd...
2018-03-22 23:45:02
158
原创 LeetCode 547. Friend Circles
public int findCircleNum(int[][] m) { int res = 0; int[] mark = new int[m.length]; for(int i = 0; i < m.length; i++) { if(mark[i] == 0) { DFS(i, m, mark); res++; } } r...
2018-03-20 12:37:02
158
原创 LeetCode 207. Course Schedule
public boolean canFinish(int numCourses, int[][] nums) { ArrayList<GraphNode> graph = new ArrayList<>(); int[] visit = new int[numCourses]; for(int i = 0; i < numCourses; i++) ...
2018-03-19 21:20:39
131
原创 LeetCode 633. Sum of Square Numbers
public boolean judgeSquareSum(int c) { int left = 0, right = (int) Math.sqrt(c); while(left <= right) { int sum = left * left + right * right; if(sum < c) { left++; } els...
2018-03-15 16:00:33
117
原创 LeetCode 450. Delete Node in a BST
public TreeNode deleteNode2(TreeNode root, int key) { if(root == null) { return null; } if(key > root.val) { //大于,进入右子树 root.right = deleteNode2(root.right, key); } else if(...
2018-03-14 20:59:23
104
原创 LeetCode 463. Island Perimeter
public class IslandPerimeter { int res = 0; public int islandPerimeter(int[][] grid) { if(grid.length == 0 || grid[0].length == 0) return 0; int[][] mark = new int[grid.length][grid[0].len...
2018-03-14 08:41:48
93
原创 LeetCode 3. Longest Substring Without Repeating Characters
public String longestPalindrome(String s) { char[] ch = new char[s.length() * 2 + 1]; //构造S for(int i = 0; i < ch.length - 1; i += 2) { ch[i] = '#'; ch[i + 1] = s.charAt((i + 1) / 2)...
2018-03-11 21:27:34
104
原创 LeetCode 476. Number Complement
public int findComplement(int num) { int i = 0; while(i < num) { i = i << 1 | 1; } return i - num; }00001111(num) + 11110000(res) = 11111111(i)利用这个原理便可以求得res,即i < num时,不停...
2018-03-11 16:26:12
90
原创 LeetCode 129. Sum Root to Leaf Numbers
public int sumNumbers(TreeNode root) { return DFS(root, 0); } public int DFS(TreeNode node, int sum) { if(node == null) return 0; int currSum = sum * 10 + node.val; //当前这个节点时的sum if(...
2018-03-09 22:06:12
154
原创 LeetCode 26. Remove Duplicates from Sorted Array
public int removeDuplicates(int[] nums) { if(nums.length < 2) return nums.length; int slow = 0; for(int fast = 1, len = nums.length; fast < len; fast++) { if(nums[slow] < nums[fas...
2018-03-09 18:15:22
85
原创 LeetCode 189. Rotate Array
public void rotate2(int[] nums, int k) { k = k % nums.length; //处理k超过len的情况 reverse(nums, 0, nums.length - k); reverse(nums, nums.length - k, nums.length); reverse(nums, 0, nums.length);...
2018-03-08 15:29:49
100
原创 LeetCode 560. Subarray Sum Equals K
public int subarraySum(int[] nums, int k) { HashMap<Integer, Integer> sumMap = new HashMap<>(); //<每个下标的sum, sum出现次数> int sum = 0, res = 0; sumMap.put(0, 1); //sum刚好等...
2018-03-07 19:07:09
114
原创 LeetCode 451. Sort Characters By Frequency
public String frequencySort(String s) { char[] map = new char[123]; char[] ch = s.toCharArray(); for(int i = 0; i < ch.length; i++) { map[ch[i]]++; } StringBuffer sb = new String...
2018-03-06 17:13:06
88
原创 LeetCode 347. Top K Frequent Elements
public List<Integer> topKFrequent(int[] nums, int k) { HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); List<Integer> res = new ArrayList<Integer>();...
2018-03-06 15:36:40
113
原创 LeetCode 101. Symmetric Tree
public boolean isSymmetric(TreeNode root) { return DFS(root, root); } public boolean DFS(TreeNode t1, TreeNode t2) { if(t1 == null && t2 == null) return true; if(t1 == null || t2 == ...
2018-03-04 22:05:40
93
原创 LeetCode 415. Add Strings
public String addStrings(String num1, String num2) { if(num2.length() > num1.length()) { String temp = new String(num1); num1 = num2; num2 = temp; } char[] ch1 = num1.toCharArray(...
2018-03-04 21:59:49
102
原创 LeetCode 回溯法合集
78. Subsetspublic List<List<Integer>> subsets(int[] nums) { //把空集加进去 List<List<Integer>> result = new ArrayList<List<Integer>>(); result.add(new ArrayList<...
2018-02-27 17:24:40
345
原创 LeetCode 153. Find Minimum in Rotated Sorted Array
public int findMin(int[] nums) { if(nums.length == 0) return -1; if(nums[0] <= nums[nums.length - 1]) return nums[0]; int begin = 0; int end = nums.length - 1; int mid = 0; while(...
2018-02-24 16:37:39
90
原创 LeetCode 74. Search a 2D Matrix
public boolean searchMatrix(int[][] matrix, int target) { if(matrix.length == 0 || matrix[0].length == 0) return false; int row = 0; int col = matrix[0].length - 1; while(row < matrix...
2018-02-24 14:50:15
91
原创 LeetCode 33. Search in Rotated Sorted Array
public int search(int[] nums, int target) { if(nums.length == 0) return -1; int begin = 0; int end = nums.length - 1; int mid = 0; while(begin <= end) { mid = begin + (end - begin) ...
2018-02-24 13:51:29
78
原创 LeetCode 374. Guess Number Higher or Lower
public int guessNumber(int n) { int begin = 1; int end = n; while(begin <= end) { int mid = begin + (end - begin) / 2; if(guess(mid) == 0) { return mid; } else if(guess(mi...
2018-02-24 10:33:49
181
原创 LeetCode 167. Two Sum II - Input array is sorted
public int[] twoSum(int[] numbers, int target) { int[] result = new int[2]; int begin = 0; int end = numbers.length - 1; while(begin <= end) { int sum = numbers[begin] + numbers[end];...
2018-02-23 22:30:43
77
原创 LeetCode 236. Lowest Common Ancestor of a Binary Tree
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root == null || root == p || root == q) return root; TreeNode left = lowestCommonAncestor(root.left, p, q); TreeN...
2018-02-23 17:43:00
71
原创 LeetCode 637. Average of Levels in Binary Tree
public List<Double> averageOfLevels(TreeNode root) { List<Double> result = new ArrayList<Double>(); Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(...
2018-02-22 16:22:22
96
原创 LeetCode 257. Binary Tree Paths
public List<String> binaryTreePaths(TreeNode root) { List<String> result = new ArrayList<String>(); order(root, result, new StringBuffer()); return result; } public void or...
2018-02-21 22:40:57
80
原创 LeetCode 107. Binary Tree Level Order Traversal II
public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if (root == null) return result; ...
2018-02-18 14:03:44
81
原创 LeetCode 104. Maximum Depth of Binary Tree
public int maxDepth(TreeNode root) { return order(root, 0); } public int order(TreeNode node, int depth) { if(node == null) { return depth; } depth++; int d1 = order(node.left, dep...
2018-02-18 11:10:42
125
原创 LeetCode 438.Find All Anagrams in a String
public List<Integer> findAnagrams(String s, String p) { List<Integer> result = new ArrayList<Integer>(); //构造P的map int[] mapP = new int[26]; for(int i = 0, len = p.length(); ...
2018-02-17 11:09:41
193
原创 LeetCode 387. First Unique Character in a String
public int firstUniqChar(String s) { int[] arr = new int[26]; int len = s.length(); for(int i = 0; i < len; i++) { arr[s.charAt(i) - 'a']++; } for(int i = 0; i < len; i++) { ...
2018-02-16 20:44:37
89
原创 LeetCode 205. Isomorphic Strings
同构字符串public boolean isIsomorphic1(String s, String t) { if(s.length() != t.length()) return false; char[] chS = s.toCharArray(); char[] chT = t.toCharArray(); int[] mapS = new int[128]; i...
2018-02-16 15:08:25
104
转载 位运算——LeetCode 136.Single Number
给定一个整数数组, 每个元素出现两次, 除了某一个元素。找到那个出现一次的元素。public int singleNumber(int[] nums) { int ans = 0; for (int i : nums) { ans ^= i; } return ans; }这里先讲位运算的特点:1.0 ^ N = N2.N ^ N = 0所以每个出现两次...
2018-02-14 21:09:07
90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人