zoukankan      html  css  js  c++  java
  • 39. 组合总和

    给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

    candidates 中的数字可以无限制重复被选取。

    说明:

    所有数字(包括 target)都是正整数。
    解集不能包含重复的组合。 
    示例 1:

    输入: candidates = [2,3,6,7], target = 7,
    所求解集为:
    [
    [7],
    [2,2,3]
    ]
    示例 2:

    输入: candidates = [2,3,5], target = 8,
    所求解集为:
    [
      [2,2,2,2],
      [2,3,3],
      [3,5]
    ]

    public class L39 {
    //这是回溯法
    public static List<List<Integer>> combinationSum(int[] candidates, int target) {
    List<List<Integer>> result = new ArrayList<>();
    Stack<Integer> stack = new Stack<>();
    getList(candidates,0,target,stack,result);
    return result;

    }
    public static void getList(int[] candisates, int index, int target, Stack<Integer> stack, List<List<Integer>> comb){
    //判断遍历终止的代码
    if(target == 0){
    Stack<Integer> stack02 = new Stack<>();
    stack.forEach(s->stack02.push(s));
    comb.add(stack02);
    return;
    }else if(target<0){
    return;
    }
    //进行遍历
    for(int in = index;in < candisates.length && (target > candisates[in]);in ++){
    stack.push(candisates[in]);
    getList(candisates,in,target - candisates[in],stack,comb);
    stack.pop();
    }
    }

    public static void main(String[] args) {
    int[] can = {3,2,6,7,1};
    Arrays.sort(can);
    List<List<Integer>> result = combinationSum(can,7);
    }
    }
  • 相关阅读:
    匹配@之前面的部分
    把一个数字的字符串转换为千分符的标识方式?
    下标重置
    linux的time命令

    常用正则
    正则
    PHP 菠菜木马代码
    PHP 木马代码,
    一句话的木马
  • 原文地址:https://www.cnblogs.com/mayang2465/p/11854715.html
Copyright © 2011-2022 走看看