zoukankan      html  css  js  c++  java
  • leetcode40

     1 class Solution {
     2     public List<List<Integer>> combinationSum2(int[] candidates, int target) {
     3         List<List<Integer>> combinations = new ArrayList<>();
     4         Arrays.sort(candidates);
     5         List<Integer> tempCombination = new ArrayList<>();
     6         backtracking(tempCombination, combinations, new boolean[candidates.length], 0, target, candidates);
     7         return combinations;
     8     }
     9 
    10     private void backtracking(List<Integer> tempCombination, List<List<Integer>> combinations,
    11                               boolean[] hasVisited, int start, int target, final int[] candidates) {
    12 
    13         if (target == 0) {
    14             combinations.add(new ArrayList<>(tempCombination));
    15             return;
    16         }
    17         for (int i = start; i < candidates.length; i++) {
    18             if (i != 0 && candidates[i] == candidates[i - 1] && !hasVisited[i - 1]) {
    19                 continue;
    20             }
    21             if (candidates[i] <= target) {
    22                 tempCombination.add(candidates[i]);
    23                 hasVisited[i] = true;
    24                 backtracking(tempCombination, combinations, hasVisited, i + 1, target - candidates[i], candidates);
    25                 hasVisited[i] = false;
    26                 tempCombination.remove(tempCombination.size() - 1);
    27             }
    28         }
    29     }
    30 }

    对比leetcode39

     1 public class LEET_39 {
     2     public List<List<Integer>> combinationSum(int[] candidates, int target) {
     3         List<List<Integer>> combinations = new ArrayList<>();
     4         List<Integer> tempCombination = new ArrayList<>();
     5         backtracking(tempCombination, combinations, 0, target, candidates);
     6         return combinations;
     7     }
     8 
     9     private void backtracking(List<Integer> tempCombination, List<List<Integer>> combinations,
    10                               int start, int target, final int[] candidates) {
    11 
    12         if (target == 0) {
    13             combinations.add(new ArrayList<>(tempCombination));
    14             return;
    15         }
    16         for (int i = start; i < candidates.length; i++) {
    17             if (candidates[i] <= target) {
    18                 tempCombination.add(candidates[i]);
    19                 backtracking(tempCombination, combinations, i, target - candidates[i], candidates);
    20                 tempCombination.remove(tempCombination.size() - 1);
    21             }
    22         }
    23     }
    24 }
  • 相关阅读:
    SQL随机生成6位数字
    安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法
    Windows 7 完美安装 Visual C++ 6.0
    解决js中window.location.href不工作的问题
    DataList中动态显示DIV
    Gridview、DataList、Repeater获取行索引号
    Java多jdk安装
    【CentOS】samba服务器安装与配置
    【CentOS】IBM X3650M4 IMM远程管理【转载】
    【Java】Eclipse导出jar包与javadoc
  • 原文地址:https://www.cnblogs.com/asenyang/p/10998015.html
Copyright © 2011-2022 走看看