python可以做力扣的题吗_Python之中力扣之组合总和
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates
中的每个数字在每个组合中只能使用一次。
说明:
所有数字(包括目标数)都是正整数。解集不能包含重复的组合。
示例 1:
输入:candidates = [10,1,2,7,6,1,5],target =
8,
所求解集为:
[
[1,7],
[1,2, 5],
[2,6],
[1,1, 6]
]
解决方案:
这道题的主要注意事项是一次组合中不能重复使用一个数字,与之区别开的另外一道题可参考力扣“组合总和1”题目。
这道题还是是一道较为基础的回溯算法题,根据回溯算法固有规律,我们可以将其看作是一种探索法。
先对candidates进行一个排序,创建一个result列表,储存得到的结果,用于最后输出。然后从第一个数开始尝试,回溯条件为当combination即当前相加和大于target时,就回到上一步;如果combination等于target,便存入result中并且继续回溯,直到结束。
这里值得注意的一个操作是剪枝,及不让元素被重复选取。直接上代码:
for i in range(index,lenth-1): if i>index and
candidates[i] == candidates[i-1]: continue
详细的更多剪枝细节可以深入探究。
Python代码:
def combinationSum2(candidates, target): result = []
candidates.sort() lenth = len(candidates) if lenth == 0: return [] def
backtrack2(sums,index,combination): if sums > target: return if sums ==
target: result.append(combination) if sums < target: for i in
range(index,lenth-1): if i>index and candidates[i] == candidates[i-1]:
continue backtrack2(sums+candidates[i],i+1,combination+[candidates[i]])
backtrack2(0,-1,[]) return result
结语
回溯算法其实是一个架子,我们只需要根据题目的相应情况来调整回溯的条件与跳出的条件,相当于是套公式。只需要记住“公式”,理解算法思路,便可以用来轻松解题。
版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。
python可以做力扣的题吗_Python之中力扣之组合总和相关推荐
- python tkinter做的生成计算题的GUI
前言 提示:把前段时间做的一个训练小朋友计算能力的python小程序做了一个封装GUI,使用起来非常方便,题海战术可以大幅度提升小朋友的计算能力,目前做好了小数正负数整数的程序,欢迎大家探讨. 一.代 ...
- 【力扣刷题——字符串】附力扣链接、题目描述、解题方法及代码(344、541、剑指Offer05、151、剑指 Offer58、28、459)后续再补充
- python第五章课后编程题答案_Python核心编程-第五章课后习题
5-1 整形 讲讲 Python 普通整型和长整型的区别 答:在2.7版本基本淡化了区别.真要区分的话,普通整型是32位或者64位,而长整型只与PC内存有关,很大就是了 5-2 运算符 (a) 写一个 ...
- python怎么做软件开发有前途吗_Python程序员就业行情以及前景分析
最近Python大热,就想要分析一下相关的市场需求,看一下Python到底集中在哪些城市,企业对Python工程师的一些需求到底是怎样的,基于此,爬取了国内某招聘平台的相关数据,获取到30000+条相 ...
- python能做什么有趣的事作文_Python怎么学之小学生作文
现在,解决python 怎么学的问题,是非常非常重要的. 所以, python 怎么学,发生了会如何,不发生又会如何. 邓拓曾经说过,越是没有本领的就越加自命不凡.带着这句话,我们还要更加慎重的审视这 ...
- python大学教程吕云翔课后题答案_python大学教程吕云翔.ppt
第五章 Python 数据结构 列表 ? 列表:类似于 C 语言中的数组概念,一个列表中可以包含任意个数据, 每一个数据称为元素. Python 允许同一个列表中元素的数据类型不同, 可以是整数.字符 ...
- 用python可以做什么有趣的事作文_Python还能做这么有趣的事情!
我:小哥哥,python能不能干点有趣的事情鸭? 惨绿青年:当然了,emmm--我想一下.诶,我记得python可以用来制作字符画. 我:字符画是什么东东鸭? 惨绿青年:我们平时看到的图片是由很多个不 ...
- 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!
开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...
- 力扣刷题——双数之和
很多人去力扣刷题都是数组的第一题,也就是双数之和,相信这也是很多人劝退题目,甚至对自己学过的知识产生了怀疑,这真的是我学完C语言,Java,Python或C++之后能做出来的题目吗?直接劝退了很多人, ...
最新文章
- 学 Win32 汇编[12]: PTR、OFFSET、ADDR、THIS
- 用js实现统计字符串里面的出现次数最多的字符
- [html] 使用button当按钮和使用div当按钮有什么区别?
- 带你自学Python系列(五):Python解决列表字符不区分大小写问题
- vue 中获取select 的option的value 直接click?
- 201809-1 卖菜
- python3 shell,python3执行shell命令
- 详细设计的工具——程序流程图
- 88.合并两个有序数组
- matlab 密集,matlab – 全局和parfor
- 华为2019数字芯片岗笔试解析(多选部分)
- 性能优化-service进程防杀
- MysQL索引与事务
- 程序员浪漫表白小程序
- 2018年5月28日 情绪、信念与身体 总得写点什么
- 2016年中考计算机考试模拟试题,2016年计算机三级考试模拟试题(含答案)
- orcal根据身份证获取年龄
- HTML+CSS美食静态网页设计——简单牛排美食餐饮(9个页面)公司网站模板企业网站实现
- 计算机相关装备有哪些,DNF装备搭配计算器_官方网站_17173DNF专区_17173.com中国游戏门户站...
- 【JAVA】500勇士问题,杀掉第三个人
热门文章
- iOS 音视频之网络视频播放AVPlayerViewController(iOS8.0+使用)
- 电脑工作者保护自己的眼睛
- 数据链路层的三个基本问题——封装成帧、透明传输和差错检测
- Python——雅克比迭代求线性方程组的根
- 10个顶级商业思维_9个启发 | 如何用设计思维解决商业难题
- win server无法安装无线网卡驱动
- 大数据在各个行业的应用_大数据应用:大数据应用的七大领域
- 【已解决】Could not find a declaration file for module ‘xxx‘. vue + ts
- win10调节屏幕亮度_小米10首创双光线感应器,屏幕亮度调节更加智能和人性化...
- python自动化控制脚本