力扣(39.40)补9.20
目前打算刷些算法题,数据结构的题暂时放一放吧。
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相关推荐
- 力扣 双周赛补题 2086. 从房屋收集雨水需要的最少水桶数
文章目录 题目 思路 AC代码 后记 题目 从房屋收集雨水需要的最少水桶数 思路 思路是贪心,因为我们需要从左向右找寻所有的水桶数,所以我们对于每一个房屋都优先判断右边是否能放水桶,右边不能放就看左边 ...
- leetcode(力扣) 39. 组合总和(回溯 剪枝)
文章目录 题目描述 思路分析 完整代码 剪枝: 完整代码 题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为 ...
- 力扣学习记录(每日更新)
文章目录 引言 简单 力扣:1 两数之和 力扣:20 有效的括号 力扣:21 合并两个有序链表 力扣:22 括号生成 力扣:27 移除元素 力扣: 35 搜索插入位置 力扣:70 [爬楼梯](http ...
- 力扣刷题记录-回溯算法相关题目
首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...
- 《LeetCode力扣练习》第39题 组合总和 Java
<LeetCode力扣练习>第39题 组合总和 Java 一.资源 题目: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidate ...
- 《LeetCode力扣练习》第20题 有效的括号 Java
<LeetCode力扣练习>第20题 有效的括号 Java 一.资源 题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效. 有效字符 ...
- 力扣刷题【20,21,26,27,35】
- 20 有效的括号 21 合并两个有序链表 26 删除数组中的重复项 27. 移除元素 35. 搜索插入位置 20 有效的括号 使用replace一直替换 package top.lel.lc.ea ...
- LeetCode 2020 力扣杯全国春季编程大赛(1644/4093,前40.2%)
文章目录 1. 比赛结果 2. 题目解析 2.1 拿硬币 Easy 2.2 传递信息 Esay 2.3 剧情触发时间 Medium 2.4 最小跳跃次数 Hard 2.5 二叉树任务调度 Hard 1 ...
- 算法训练第十一天|力扣20. 有效的括号,1047. 删除字符串中的所有相邻重复项,150. 逆波兰表达式求值
20. 有效的括号 题目链接:有效的括号 参考:https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B ...
- 力扣第303场周赛补题
力扣 第三题:设计食物评分系统 示例 输入 ["FoodRatings", "highestRated", "highestRated", ...
最新文章
- 小型的ESP8266-01s WiFi串口模块是否可以下载MicroPython?
- python入门基础代码图-python入门代码指南教程书籍推荐2020总结全集汇总
- C#反射使用方法过程及步骤
- 解决java poi导出excel2003不能超过65536行的问题
- 服务器摆放需要预留U位么_这样的U型厨房,才是我向往的
- identcurrent mysql_MYSQL库内所有表名及表结构获取
- sql server 2008 的安装
- JAX-WS编写webservice
- hadoop之MapReducer作业的提交执行过程
- php远程获取文件大小,PHP 获取远程文件大小的3种解决方法
- 同花顺黄金分割线及斐波那契数列分析网格(主图公式)
- linux打印系统cups原理分析
- 《c语言南开100题》,二级C语言南开100题 免费
- 兄弟无线打印显示服务器内部错误,兄弟打印机故障代码表
- 蜀门 - 青城加点完美攻略
- codeforces 730 A Toda 2
- java8 利用reduce实现将列表中的多个元素的属性求和并返回
- 【cvpr2022】ReSTR: Convolution-free Referring Image Segmentation Using Transformers
- ARM版本ubuntu安装PL2303驱动
- 想成为魅力十足的人的十大习惯