目前打算刷些算法题,数据结构的题暂时放一放吧。

39.组合总和

不会,毕竟好久没做回溯了。

看了这个图会好理解很多呦。

class Solution {

List<List<Integer>> ans=new ArrayList<>();

List<Integer> list=new ArrayList<>();

public List<List<Integer>> combinationSum(int[] candidates, int target) {

int n=candidates.length;

Arrays.sort(candidates);

back(candidates,target,0,n,0);

return ans;

}

public void back(int[] candidates,int target,int index,int n,int sum){

if(sum==target){

ans.add(new ArrayList<>(list));

这里要对list转型才能调用add函数。

return ;

}

for(int i=index;i<n;i++){

if(sum+candidates[i]>target) break;

else{

list.add(candidates[i]);

back(candidates,target,i,n,sum+candidates[i]);

list.remove(list.size()-1);

}

}

}

}

40.组合总和Ⅱ

可以做,这题和上题比,有个细节就是解集不能包含重复元素。

class Solution {

List<List<Integer>> ans=new ArrayList<>();

List<Integer> list=new ArrayList<>();

public void back(int[] candidates,int index,int target){

if(0==target){

ans.add(new ArrayList<>(list));

return;

}

for(int i=index;i<candidates.length;i++){

if(i>index&&candidates[i]==candidates[i-1])

continue;

这样就能保证没有重复解集。

if(0>target)break;

list.add(candidates[i]);

back(candidates,i+1,target-candidates[i]);

list.remove(list.size()-1);

}

}

public List<List<Integer>> combinationSum2(int[] candidates, int target) {

Arrays.sort(candidates);

back(candidates,0,target);

return ans;

}

}

力扣(39.40)补9.20相关推荐

  1. 力扣 双周赛补题 2086. 从房屋收集雨水需要的最少水桶数

    文章目录 题目 思路 AC代码 后记 题目 从房屋收集雨水需要的最少水桶数 思路 思路是贪心,因为我们需要从左向右找寻所有的水桶数,所以我们对于每一个房屋都优先判断右边是否能放水桶,右边不能放就看左边 ...

  2. leetcode(力扣) 39. 组合总和(回溯 剪枝)

    文章目录 题目描述 思路分析 完整代码 剪枝: 完整代码 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为 ...

  3. 力扣学习记录(每日更新)

    文章目录 引言 简单 力扣:1 两数之和 力扣:20 有效的括号 力扣:21 合并两个有序链表 力扣:22 括号生成 力扣:27 移除元素 力扣: 35 搜索插入位置 力扣:70 [爬楼梯](http ...

  4. 力扣刷题记录-回溯算法相关题目

    首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...

  5. 《LeetCode力扣练习》第39题 组合总和 Java

    <LeetCode力扣练习>第39题 组合总和 Java 一.资源 题目: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidate ...

  6. 《LeetCode力扣练习》第20题 有效的括号 Java

    <LeetCode力扣练习>第20题 有效的括号 Java 一.资源 题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符 ...

  7. 力扣刷题【20,21,26,27,35】

    - 20 有效的括号 21 合并两个有序链表 26 删除数组中的重复项 27. 移除元素 35. 搜索插入位置 20 有效的括号 使用replace一直替换 package top.lel.lc.ea ...

  8. LeetCode 2020 力扣杯全国春季编程大赛(1644/4093,前40.2%)

    文章目录 1. 比赛结果 2. 题目解析 2.1 拿硬币 Easy 2.2 传递信息 Esay 2.3 剧情触发时间 Medium 2.4 最小跳跃次数 Hard 2.5 二叉树任务调度 Hard 1 ...

  9. 算法训练第十一天|力扣20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值

    20. 有效的括号 题目链接:有效的括号 参考:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B ...

  10. 力扣第303场周赛补题

    力扣 第三题:设计食物评分系统 示例 输入 ["FoodRatings", "highestRated", "highestRated", ...

最新文章

  1. 小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?
  2. python入门基础代码图-python入门代码指南教程书籍推荐2020总结全集汇总
  3. C#反射使用方法过程及步骤
  4. 解决java poi导出excel2003不能超过65536行的问题
  5. 服务器摆放需要预留U位么_这样的U型厨房,才是我向往的
  6. identcurrent mysql_MYSQL库内所有表名及表结构获取
  7. sql server 2008 的安装
  8. JAX-WS编写webservice
  9. hadoop之MapReducer作业的提交执行过程
  10. php远程获取文件大小,PHP 获取远程文件大小的3种解决方法
  11. 同花顺黄金分割线及斐波那契数列分析网格(主图公式)
  12. linux打印系统cups原理分析
  13. 《c语言南开100题》,二级C语言南开100题 免费
  14. 兄弟无线打印显示服务器内部错误,兄弟打印机故障代码表
  15. 蜀门 - 青城加点完美攻略
  16. codeforces 730 A Toda 2
  17. java8 利用reduce实现将列表中的多个元素的属性求和并返回
  18. 【cvpr2022】ReSTR: Convolution-free Referring Image Segmentation Using Transformers
  19. ARM版本ubuntu安装PL2303驱动
  20. 想成为魅力十足的人的十大习惯

热门文章

  1. 健身行业的微信公众号图文应该怎样排版?
  2. 查看oracle版本及补丁,查看oracle版本和补丁
  3. kakfka2.2源码分析之handleFetchRequest
  4. python正则表达式01
  5. java中如何添加画板背景图,在AI中怎么把已知图片在新建画板时候作为画板的背景来建立画板啊!...
  6. 【电源设计】01电源参数及LDO
  7. 沈阳学计算机Excel,沈阳excel培训点
  8. linux掩码,linux文件权限掩码umask
  9. Golang DNS 随便写写
  10. 阿里代运营一定要掌握的几大技能!