算法-有一个整型数组A,求数组A的子数组,子数组值的和需要在数组A中
有一个整型数组A,求数组A的子数组,子数组值的和需要在数组A中。求一个高效的算法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有一个整型数组A,求数组A的子数组,子数组值的和需要在数组A中。求一个高效的算法。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
我粗略的想法是这样的,比方我们有一个先排列好的数组A:[1,2,3,4,5]:
因为子数组必须是要两个值,且数组内数字都是正整数,那么只可能从第三个数c3开始,A的子数组之和才能与之相等。然后就从第三个数开始,遍历到最后一个数cn。
对于每个数ci,只有小于它的数才能构成我们要的子集,所以input只能是[c1,c2,...ci-1],然后用动归应该就可以了,选ci-1,不选ci-1...等等
我在想能不能利用一下空间,即把之前的结果存下来加以利用,比方和为cn-1的子集已经全部得到,那么对于cn来说,只要子集中有cn-1都可以替换成cn-1的子集,得到更多的答案,但可能会引入重复项。
总的复杂度是O(n^2)
希望大家提供更有效的算法