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

3Sum without sorting

全局:

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

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

x
看fb面经看到这道题,感觉应该用HashMap,不过自己写不出来,所以来问问各位。
要求还是O(n^2)

上一篇:关于二分法的边界问题
下一篇:刷题视频推荐
推荐
14417335 2017-10-30 05:25:25 | 只看该作者
全局:
必须先排序,然后把3sum的问题改为给定一个值的2sum的问题。去重只需要在遍历的时候不重复处理同一个值就好。比如

1 2 2 2 2 4 6 9 。。。

当处理完第一个二的2sum的问题后,下一个要处理的是给定4的2sum的问题。
回复

使用道具 举报

推荐
小菜 2018-3-17 07:00:00 | 只看该作者
全局:
红茶香槟可乐 发表于 2018-3-5 13:34
求啥啊 是求全部的解吗,
for 外层, 用set防止外层重复
内循环一遍 hashmap

这样最后还是有重复的,[-1,0,1,2,0,-1,-4] 会有[-1,-0,1],[1,0,-1]. 还不知道要怎么解决这个问题。
回复

使用道具 举报

🔗
 楼主| youhaoW 2017-10-27 22:32:53 | 只看该作者
全局:
顶一下,之前帖子审核了两天。。。
回复

使用道具 举报

🔗
clould365 2017-10-28 02:36:03 | 只看该作者
全局:
hash的key是两个数的和,value是 两个index,

然后再扫一遍,看能不能凑出来。

--

但是有重复的话,去重比较麻烦。

感觉还是sort好用
回复

使用道具 举报

🔗
CurtisYamanaka 2017-10-28 02:58:41 | 只看该作者
全局:
感觉可以先数组去重。 然后接着用3sum里那样的写法就行了?
回复

使用道具 举报

🔗
prince123 2017-10-30 06:05:29 | 只看该作者
全局:
关注一下这个问题
回复

使用道具 举报

🔗
qiuyingyue0516 2017-10-30 06:46:29 | 只看该作者
全局:
要求without sorting 咋做到O(n^2)0 0 关注 求指教
回复

使用道具 举报

🔗
jason123 2018-2-2 07:48:19 | 只看该作者
全局:
不排序的难点就是去重,最简单的就是先统计所有在nums里面出现的数字和次数。
假设你有 a b c 三个数是potential 的答案之一,所以 a, b 可能是 nums里面任何一个数(a,b可能相等)。
因此两个for loop 就可以找到所有的a, b 的可能,c可以通过 -(a+b) 计算出来。
for( a = any num in distinct nums)
    for( b = any num in distinct nums)
          c = -(a +b)
这样一来, a, b, c的值我们都得到了,两个for loop搞定就是O(k^2); 这个k是nums里面distinct的num的个数。
之后就开始玩去重。 去重有很多方法,你自己可以定义。
比如你可以规定 a <= c <= b来防止 a,b,c ; c,b,a ; b,a,c 这种重复
具体还有些小trick 自己实现下看看
总的complexity 是  O(n) + O(k^2)  ; O(n)是遍历一遍nums 来统计,O(k^2)是来生成potential answer,在加入final answer list前要筛选。
这个答案比O(n^2)好一些
回复

使用道具 举报

🔗
IM_Sybil 2018-2-2 15:05:37 | 只看该作者
全局:
bowenf 发表于 2017-10-28 02:58
感觉可以先数组去重。 然后接着用3sum里那样的写法就行了?

这样不对吧~ 那[0,0,0] target==0的这种不就miss了吗
回复

使用道具 举报

全局:
求啥啊 是求全部的解吗,
for 外层, 用set防止外层重复
内循环一遍 hashmap
然后two sum, 一旦找到俩数就把俩数放进内层用的hashset里,用set来防止重复情况发生?
回复

使用道具 举报

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

本版积分规则

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