查看: 1271| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

[数组] 找两个不重叠subsequence它们sum一样

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
不知道在哪里看到的题
从一个数组里 问是否存在两个不重叠的subsequence使得他们的 sum一样
比如
10 3 6 2 1 1 4 5
那么就存在
比如
10 和
6 4
它们的sum就是一样的
求大神指点一波


补充内容 (2019-10-17 07:28):
目前只能想到bruteforce  但是是指数的复杂度,。

上一篇:[version1] 分享精心整理的20个常见behavior问题列表, 求大米
下一篇:大数据资料分享下载
推荐
codeyy 2019-10-17 11:29:56 | 只看该作者
全局:
LC956. Tallest Billboard

评分

参与人数 2大米 +2 收起 理由
EbyccoCheng + 1 赞一个
dennyzhang007 + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
Enalynn 2019-10-17 07:36:53 | 只看该作者
全局:
闻着有股dp的味
回复

使用道具 举报

🔗
yhliang 2019-10-17 08:06:46 | 只看该作者
全局:
我能想到两个解法,都是指数级
1. bruteforce, 用两个bucket存sum。每个数字三个选项,进第一个bucket,进第二个bucket,都不进。选完了看下是不是符合。复杂度O(3^n)。可以用剩余最大/最小累计和做适当的剪枝。
2. a+b+c = d + e 也就是 a + b + c - d - e = 0。只要我们找到一个序列,给其中数字加上正负号(至少一个正号,至少一个负号),和等于0就行。用两个hash set。一个记载可能出现的全正序列和,记为set1,一个记载可能出现的至少有一个为负(不能都为负)的序列和。记为set2。一个数字一个数字来,如果当前数字a存在在set1中,我们找到了一个解。如果a或者-a在set2中我们也找到了一个解。直接返回true就行。否则update 连个set。对于set1里面的元素b,把(a+b)加入set1里,把(b-a)加入set2里。对于set2里的元素c,把(c + a)和 (c - a)加入set2里。复杂度O(2^n) * O(n). 因为set里的不同数目最多就2^n个。

两个解法都是可以解决含有负数的输入。
不知道第二个算法对不对,欢迎讨论。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表