[LeetCode]39. Combination Sum
2016-02-08 16:24
267 查看
Problem Description
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.The same repeated number may be chosen from C unlimited number of times.
Note:
All numbers (including target) will be positive integers.
Elements in a combination (a1, a2, … , ak) must be in non-descending order. (ie, a1 ≤ a2 ≤ … ≤ ak).
The solution set must not contain duplicate combinations.
For example, given candidate set 2,3,6,7 and target 7,
A solution set is:
[7]
[2, 2, 3]
[]https://leetcode.com/problems/combination-sum/]
思路
先把候选数组排序,然后递归深度搜索就可以了。。。第一次一遍AC的题,Mark一下!!!!
Code
package Q39; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Solution { public static void getComb(int[] candidates, int target, List<Integer> tmp, List<List<Integer>> ans,int j) { for (int i = j; i < candidates.length; i++) { if (target == 0) { ans.add(new ArrayList<Integer>(tmp)); return; } if (target < 0 || candidates[i] > target) { break; } else { if (target - candidates[i] >= 0) { tmp.add(candidates[i]); getComb(candidates, target - candidates[i], tmp, ans,i); tmp.remove(tmp.size()-1); } } } } public static List<List<Integer>> combinationSum(int[] candidates, int target) { List<List<Integer>> ans = new ArrayList<List<Integer>>(); Arrays.sort(candidates); List<Integer> tmp = new ArrayList<Integer>(); getComb(candidates, target, tmp, ans,0); return ans; } // public static void main(String[] args) { // int[] a = { }; // System.out.println(combinationSum(a, 1).toString()); // } }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解