zoukankan      html  css  js  c++  java
  • LeetCode 39 Combination Sum(满足求和等于target的所有组合)

     
    Problem: 给定数组并且给定一个target,求出所有满足求和等于target的数字组合
     
    遍历所有的数组中元素,然后对target进行更新,将该元素添加到tempList中,直到remain等于0时达到条件,可以将该tempList添加到list中
     
    注意:每个元素可以使用多次,因此每次的遍历都要从上次的那个下标开始。
     
    当target更新到小于0的时候,返回,
    当target更新到大于0的时候,进行从start下标开始遍历,并且将该数字添加到tempList中,递归调用。递归调用结束最后需要将tempList进行移除最顶的元素。
     
     
    参考代码: 
    package leetcode_50;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    
    /***
     * 
     * @author pengfei_zheng
     * 求解满足加和等于target的所有数字组合
     */
    public class Solution39 {
        public List<List<Integer>> combinationSum(int[] nums, int target) {
            List<List<Integer>> list = new ArrayList<>();
            Arrays.sort(nums);
            backtrack(list, new ArrayList<>(), nums, target, 0);
            return list;
        }
    
        private void backtrack(List<List<Integer>> list, List<Integer> tempList, int [] nums, int remain, int start){
            if(remain < 0) return;
            else if(remain == 0) list.add(new ArrayList<>(tempList));
            else{ 
                for(int i = start; i < nums.length; i++){
                    tempList.add(nums[i]);
                    backtrack(list, tempList, nums, remain - nums[i], i); // not i + 1 because we can reuse same elements
                    tempList.remove(tempList.size() - 1);
                }
            }
        }
    }
  • 相关阅读:
    python反爬之js混淆-字符串映射
    How to Provide a Default Trace for a Cloud Application
    Reset Peak Used Memory
    SAP 课程
    note 1639578 and 1622837
    SAP License error
    SAP BASIS-System Move
    初识Agile(敏捷项目管理)
    SAP HANA升级
    SAP FIORI 部署
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/6537720.html
Copyright © 2011-2022 走看看