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 }
  • 相关阅读:
    mysql索引类型 normal, unique, full text
    16.信号量互斥编程
    15.信号通信编程
    14.有名管道通信
    13.无名管道通讯编程
    12.多进程程序的操作
    11.进程控制理论
    10.时间编程
    9. 库函数方式文件编程
    8.Linux文件编程
  • 原文地址:https://www.cnblogs.com/asenyang/p/10998015.html
Copyright © 2011-2022 走看看