diff --git a/2019.01.19-leetcode40/sourcema.md b/2019.01.19-leetcode40/sourcema.md new file mode 100644 index 000000000..80d205e69 --- /dev/null +++ b/2019.01.19-leetcode40/sourcema.md @@ -0,0 +1,27 @@ +# leetcode 40 + class Solution { + public List> combinationSum2(int[] candidates, int target) { + List> res = new ArrayList<>(); + if (candidates == null || candidates.length == 0 || target <= 0) { + return res; + } + Arrays.sort(candidates);// + combination(res,candidates,new ArrayList(),target,0); + return res; + } + private static void combination(List> res, int[] candidates, ArrayList list, + int target, int index) { + if (target == 0) { + if (!res.contains(list)) + res.add(new ArrayList(list)); + return; + } + if (index>=candidates.length||target < candidates[index]) { + return; + } + list.add(candidates[index]); + combination(res,candidates,list,target-candidates[index],index+1); + list.remove(list.size() - 1); + combination(res,candidates,list,target,index+1); + } +} diff --git a/2019.01.20-leetcode216/sourcema.md b/2019.01.20-leetcode216/sourcema.md new file mode 100644 index 000000000..6ff7bc7c8 --- /dev/null +++ b/2019.01.20-leetcode216/sourcema.md @@ -0,0 +1,25 @@ +# leetcode 216 + class Solution { + public List> combinationSum3(int k, int n) { + List> res = new ArrayList<>(); + if (k <= 0 || n <= 0) { + return res; + } + find(res, new ArrayList(), k, n,1); + return res; + } + private static void find(List> res, ArrayList list, int k, int n,int num) { + if (list.size() == k && n == 0) { + res.add(new ArrayList(list)); + return; + } + if (list.size() >= k) { + return; + } + for (int i = num; i <=9&&i<=n ; i++) { + list.add(i); + find(res,list,k,n-i,i+1); + list.remove(list.size() - 1); + } + } +} diff --git a/2019.01.21-leetcode78/sourcema.md b/2019.01.21-leetcode78/sourcema.md new file mode 100644 index 000000000..9391cde27 --- /dev/null +++ b/2019.01.21-leetcode78/sourcema.md @@ -0,0 +1,23 @@ +# leetcode 78 + class Solution { + public List> subsets(int[] nums) { + List> res = new ArrayList<>(); + if (nums == null || nums.length == 0) { + return res; + } + find(res,new ArrayList(), nums,0); + res.add(new ArrayList());//add empty set + return res; + } + private void find(List> res, ArrayList list, int[] nums,int index) { + if (index >= nums.length) { + return; + } + for (int i = index; i < nums.length; i++) { + list.add(nums[i]); + res.add(new ArrayList(list)); + find(res,list,nums,i+1); + list.remove(list.size() - 1); + } + } +} diff --git a/2019.01.23-leetcode131/sourcema.md b/2019.01.23-leetcode131/sourcema.md new file mode 100644 index 000000000..4585b210a --- /dev/null +++ b/2019.01.23-leetcode131/sourcema.md @@ -0,0 +1,38 @@ +# LeetCode 131 + class Solution { + public List> partition(String s) { + List> res = new ArrayList<>(); + if (s == null || s.length() == 0) { + return res; + } + find(res, new ArrayList(), s); + return res; + } + private void find(List> res, ArrayList list, String s) { + if (s.length() == 0) { + res.add(new ArrayList(list)); + return; + } + for (int i = 1; i <=s.length() ; i++) { + String temp = s.substring(0, i); + if (IsPalindrome(temp)) { + list.add(temp); + find(res,list,s.substring(i)); + list.remove(list.size() - 1); + } + } + + } + private boolean IsPalindrome(String temp) { + int left=0;int right=temp.length()-1; + while (left < right) { + if (temp.charAt(left) != temp.charAt(right)) { + return false; + }else{ + left++; + right--; + } + } + return true; + } +} diff --git a/2019.01.25-leetcode51/sourcema.md b/2019.01.25-leetcode51/sourcema.md new file mode 100644 index 000000000..b9c23c97b --- /dev/null +++ b/2019.01.25-leetcode51/sourcema.md @@ -0,0 +1,41 @@ +# LeetCode 51 + class Solution { + List> result = new ArrayList<>(); + StringBuilder point = new StringBuilder(); + HashSet col = new HashSet<>(); + HashSet pie = new HashSet<>(); + HashSet na = new HashSet<>(); + + public List> solveNQueens(int n) { + for (int i = 0; i < n; i++) point.append('.'); + dfs(n, new ArrayList()); + return result; + } + + void dfs(int n, List list) { + if (list.size() == n) { + List line = new ArrayList<>(); + for (int i = 0; i < n; i++) { + point.replace(list.get(i), list.get(i) + 1, "Q"); + line.add(point.toString()); + point.replace(list.get(i), list.get(i) + 1, "."); + } + result.add(line); + return; + } + for (int i = 0; i < n; i++) { + if (col.contains(i)|| pie.contains(list.size()-i) || na.contains(list.size()+i)) { + continue; + } + col.add(i); + pie.add(list.size() - i); + na.add(list.size() + i); + list.add(i); + dfs(n, list); + list.remove(list.size()-1); + col.remove(i); + pie.remove(list.size() - i); + na.remove(list.size() + i); + } + } +} diff --git a/2019.01.26-leetcode70/sourcema.md b/2019.01.26-leetcode70/sourcema.md new file mode 100644 index 000000000..32fa77388 --- /dev/null +++ b/2019.01.26-leetcode70/sourcema.md @@ -0,0 +1,20 @@ +# LeetCode 70 + class Solution { + public int climbStairs(int n) { + if (n == 1) { + return 1; + } + if (n == 2) { + return 2; + } + int one=1; + int two=2; + int res=0; + for (int i = 3; i <=n ; i++) { + res=one+two; + one=two; + two=res; + } + return res; + } +} diff --git a/2019.01.27-leetcode198/sourcema.md b/2019.01.27-leetcode198/sourcema.md new file mode 100644 index 000000000..af86b82d1 --- /dev/null +++ b/2019.01.27-leetcode198/sourcema.md @@ -0,0 +1,18 @@ +# leetcode 198 + class Solution { + public int rob(int[] nums) { + if(nums==null||nums.length==0){ + return 0; + } + if(nums.length==1){ + return nums[0]; + } + int[] dp=new int[nums.length]; + dp[0]=nums[0]; + dp[1]=Math.max(dp[0],nums[1]); + for(int i=2;i=2&&isArithmetic(A,i,j)){ + res+=1; + } + } + } + return res; + } + public boolean isArithmetic(int[] arr,int i,int j){ + int d=arr[i+1]-arr[i]; + for(int k=i+1;k