• [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);
            }
        }
    }
     
  • 相关阅读:
    在线JS代码调试网址
    NVM在windows系统下载及安装
    浏览器【插件】【扩展】下载安装
    JavaScript 秘密花园
    HTTP 协议
    移动端:zepto框架
    移动端:移动端事件
    移动端:移动端页面布局
    移动端:Flex弹性盒布局
    移动端:自适应和响应式布局
  • 原文地址:https://www.cnblogs.com/Moriarty-cx/p/9942971.html
Copyright © 2020-2023  润新知