📣 独立日限时特惠: VIP通行证立减$68
查看: 2507| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

3 sum

全局:

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

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

x
看地理帖子上说A的面试问了3sum的hashmap和不hash的做法,求问各位大神不hash怎么做呢?

上一篇:confusing on an interview question
下一篇:ACM题和CC150题目难度对比
🔗
hxtang 2014-2-5 02:22:01 | 只看该作者
全局:
遍历最小的number,对比它大的数做不用hash的two-sum,就是从两头往中间扫,线性时间的。
回复

使用道具 举报

🔗
co89757 2014-2-6 00:47:13 | 只看该作者
全局:
convert it to 2sum which is O(n)
回复

使用道具 举报

🔗
nerozeng 2014-2-7 14:16:22 | 只看该作者
全局:
把第一个数选好后,剩下的部分从两头往中间扫即可
回复

使用道具 举报

🔗
一地鸡毛 2014-2-8 09:47:01 | 只看该作者
全局:
。。。这个题目。。。歧义不小
回复

使用道具 举报

🔗
axaxsundu 2014-2-9 23:43:53 | 只看该作者
全局:
那hash怎么做呢。。以前都是不hash做的。。
回复

使用道具 举报

🔗
yxyxyx 2014-2-12 05:52:14 | 只看该作者
全局:
不论hash与否,关键都是为了查重。

比如这样一个数组 1 2 2 3 4,target是 7, 那么在sort好之后,a = 1, b = 靠左的2,c = 4,这是一个解;找到这个解之后需要把b的位置向右移动,c的位置向左移动。
问题在于,移动c和b的时候要保证,在移动之后,b和c不能还都是原来的值。这个就是不用hash的做法的关键:它会让b往右移动两位直到找到下一个不是2的数,也就是3。这样才能保证不会最终的结果里面没有重复。

用hash的做法就不用担心这个问题,因为hashset本身就可以用来查重。每次找到一个解就看hashset里面这个解有没有出现过,没出现过就放到最终解里面,出现过了就不放了。
回复

使用道具 举报

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

本版积分规则

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