zoukankan      html  css  js  c++  java
  • [LeetCode] 40. Combination Sum II


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

    Each number in candidates 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.

    Example 1:

    Input: candidates = [10,1,2,7,6,1,5], target = 8,
    A solution set is:
    [
      [1, 7],
      [1, 2, 5],
      [2, 6],
      [1, 1, 6]
    ]
    

    Example 2:

    Input: candidates = [2,5,2,1,2], target = 5,
    A solution set is:
    [
      [1,2,2],
      [5]
    ]

    题意:给一个数组,找出所有列表满足,列表和等于target
    题不难,回溯算法,大家注意一点就行了,有重复的元素,使用set
    class Solution {
        public List<List<Integer>> combinationSum2(int[] candidates, int target) {
            Set<List<Integer>> res = new HashSet<>();
            if (candidates.length == 0)
                return new ArrayList<>(res);
            Arrays.sort(candidates);
            DFS(res, new ArrayList<Integer>(), candidates, target, 0, 0);
            return new ArrayList<>(res);
        }
    
        private void DFS(Set<List<Integer>> res, ArrayList<Integer> list, int[] candidates, int target, int index, int sum) {
            for (int i = index; i < candidates.length; i++) {
                sum += candidates[i];
                list.add(candidates[i]);
                if (sum == target)
                    res.add(new ArrayList<>(list));
                else if (sum < target)
                    DFS(res, list, candidates, target, i + 1, sum);
                else if (sum > target) {
                    sum -= candidates[i];
                    list.remove(list.size() - 1);
                    break;
                }
                sum -= candidates[i];
                list.remove(list.size() - 1);
            }
        }
    }
     
  • 相关阅读:
    [转]关于php后门的编写
    PHP写txt日志换行
    AngularJS 前端JS框架
    跨域上传
    [转] 多域名THINKPHP利用MEMCACHE方式共享SESSION数据
    关于TP的 文件目录安全
    关于浏览器内部和 手机浏览器 上传兼容
    [转]php计算到指定日期还有多少天的方法
    vi/vim下看十六进制文件
    dos2unix(windows脚本文件放到unix下运行要注意)
  • 原文地址:https://www.cnblogs.com/Moriarty-cx/p/9942971.html
Copyright © 2011-2022 走看看