如数组:
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]
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
來個 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的原题:
递归内套一个循环