码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode-Combination Sum II

时间:2016-08-24 00:56:08      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

Each number in C may only be used once in the combination.

Note:
All numbers (including target) will be positive integers.
The solution set must not contain duplicate combinations.
For example, given candidate set [10, 1, 2, 7, 6, 1, 5] and target 8, 
A solution set is: 
[
  [1, 7],
  [1, 2, 5],
  [2, 6],
  [1, 1, 6]
]
public class Solution {
    public List<List<Integer>> combinationSum2(int[] candidates, int target) {
        if(candidates==null || candidates.length==0){
            return null;
        }
        Arrays.sort(candidates);
        List<List<Integer>> resList=new ArrayList<List<Integer>>();
        List<Integer> item=new ArrayList<Integer>();
        boolean[] isVisited = new boolean[candidates.length];
        backTracking(candidates, target, 0, item, resList, isVisited);
        return resList;
    }
    public void backTracking(int[] candidates, int target, int start, List<Integer> item, List<List<Integer>> resList, boolean[] isVisited){
        if(target<0){
            return;
        }
        if(target==0){
            resList.add(new ArrayList<Integer>(item));
            return;
        }
        for(int i=start; i<candidates.length; i++){
            if(!isVisited[i]){
                if(i>0 && candidates[i] == candidates[i-1] && isVisited[i-1]==false){
                        continue;
                }
                
                item.add(candidates[i]);
                isVisited[i]=true;
                backTracking(candidates, target-candidates[i], i+1, item, resList, isVisited);
                isVisited[i]=false;
                item.remove(item.size()-1);
            }
        }
    }
}

 

LeetCode-Combination Sum II

标签:

原文地址:http://www.cnblogs.com/incrediblechangshuo/p/5801327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!