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 }
  • 相关阅读:
    Unknown type '246 in column 3 of 5 in binary-encoded result set
    IOS开发常用的linux命令
    苹果开发中常用英语单词
    ios 中的UI控件学习总结(1)
    Srping MVC+mybatis mapping 多映射 配置
    IIS程序POST请求被触发两次的灵异事件
    文件服务器共享专用端口留档记录
    windows环境配置showdoc在线文档教程
    WindowsSever2008 R2 Standard 共享打印机手顺
    高效计算_七月算法5月深度学习班第2次课程笔记
  • 原文地址:https://www.cnblogs.com/asenyang/p/10998015.html
Copyright © 2011-2022 走看看