39.组合总数
创始人
2024-11-15 03:03:05
0

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。 

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

:做题思考全过程

思路难点:想到传入这个idx参数,否则会出现res结果中出现重复的(顺序不同)list结果。

class Solution {      List> res = new ArrayList<>();      List temp = new ArrayList<>();      public List> combinationSum(int[] candidates, int target) {         backtrace(candidates, target, 0);         return res;     }      // 将传入数组和当前需要的sum?     // idx记录上一个递归增加的元素的下标,让本次遍历增加元素从这个下标开始     public void backtrace(int[] candidates, int target, int idx){         // 不能写一起,不让第一个条件判断不符合直接会执行下面语句,根本不会看第二个判断条件         // 顺序错了,要先判断是否target符合条件,再判断直接去重if(candidates[idx] > target) return;         // if(target < 0 || candidates[idx] > target) return;          if(target < 0) return;         if(target == 0){             // 去重?             if(!res.contains(temp)) res.add(new ArrayList(temp));             return;         }         // candidates数组是递增的?         // 不是递增的。不适合用下面语句剪枝优化         // if(candidates[idx] > target) return;         // 也可以先对candidates数组排序,再使用这个优化          // for遍历candidates         // 为了达到去重目的,不让i从0开始遍历。改为         for(int i = idx; i < candidates.length; i++){             temp.add(candidates[i]);             backtrace(candidates, target - candidates[i], i);             temp.remove(temp.size()-1);         }     }  }

:默写一遍,加深印象

List> res = new ArrayList<>();  List temp = new ArrayList<>();  public List> combinationSum(int[] candidates, int target){     backtrace(candidates, target, 0);     return res; }  public void backtrace(int[] candidates, int target, int idx){     if(target < 0) return;     if(target == 0) {         res.add(new ArrayList(temp));         return;     }     for(int i = idx; i < candidates.length; i++){         temp.add(candidates[i]);         backtrace(candidates, target - candidates[i], i);         temp.remove(temp.size()-1);     } }

相关内容

热门资讯

今天下午!海盗来了辅助器无限炮... 今天下午!海盗来了辅助器无限炮!真是真的是有辅助app(有挂神器)-哔哩哔哩1、很好的工具软件,可以...
据文件显示!汇友游戏辅助!确实... 据文件显示!汇友游戏辅助!确实真的是有辅助app(竟然有挂)-哔哩哔哩1、实时汇友游戏辅助透视辅助更...
现有关情况通报如下!大菠萝提高... 现有关情况通报如下!大菠萝提高好牌几率!好像存在有辅助插件(今日头条)-哔哩哔哩大菠萝提高好牌几率是...
据通报!情怀破解!真是真的是有... 据通报!情怀破解!真是真的是有辅助软件(有挂分享)-哔哩哔哩1、下载好情怀破解脚本下载之后点击打开,...
无独有偶!心悦海南苹果版辅助!... 无独有偶!心悦海南苹果版辅助!切实有挂辅助平台(确实有挂)-哔哩哔哩1、很好的工具软件,可以解锁游戏...
现有关情况通报如下!新财神正版... 现有关情况通报如下!新财神正版辅助挂!原来存在有辅助挂(证实有挂)-哔哩哔哩1、超多福利:超高返利,...
据报道!闲逸官方辅助软件叫什么... 据报道!闲逸官方辅助软件叫什么名字!本来真的是有辅助下载(存在有挂)-哔哩哔哩1、首先打开闲逸官方辅...
现有关情况通报如下!丽水欢乐堂... 现有关情况通报如下!丽水欢乐堂辅助插件!竟然是真的辅助下载(有挂分享)-哔哩哔哩1、许多玩家不知道丽...
随着!微信小程序家乡大二辅助工... 随着!微信小程序家乡大二辅助工具!竟然真的有辅助挂(有挂头条)-哔哩哔哩微信小程序家乡大二辅助工具能...
据监测!拱趴大菠萝的辅助器!一... 据监测!拱趴大菠萝的辅助器!一直是真的辅助下载(讲解有挂)-哔哩哔哩1、每一步都需要思考,不同水平的...