给定一个值,如100,给定一个数组,从数组中挑选出N个元素,这N个元素相加也是100,得到一种结果就行
如数组:
var arr = [99.1, 92.2, 60, 50,
49.5, 45.7, 25.1, 20,
17.4, 13, 10, 7, 2.1, 2, 1];
找到和为100的数组元素:
[60,20,10,7,2,1]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
來個 Python 版的:
思路很簡單,當我要問
elements
是否能加出target
時,只有兩種可能:我要使用
element[-1]
才能加出target
-> 我要能夠使用elements[:-1]
加出target-elements[-1]
才行我不需要使用
element[-1]
就能加出target
-> 我要能夠使用elements[:-1]
加出target
才行boundary condition 是:
當
target
為0
時,代表我什麼都不用就能加出來,所以return True, []
當
elements
為空或是target
為負值時,代表永遠都加不出來了,所以return False, None
測試:
結果:
題外話,看到這個題目覺得超熟悉,如果還要考慮到解的速度等等會更有趣。
曾經做過這方面的研究,我提出一個變形的問題,大家可以思考看看:
定義看不懂沒差,我舉個例子:
這個例子是有解的:
注意,每個在
elements
中的元素只能被使用一次!组合问题。看一下leetcode的原题:
递归内套一个循环