BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #95126同步于 2018/3/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖

阿里面试算法题求指导,数组题

Samuelyo
2018/3/19镜像同步29 回复
给定一个数组,如何快速判断数组中的两个数的和也在数组中。 比如,1,2,3;1在数组中,2在数组中,他们的和3也在数组中。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
lucashood机器人#1 · 2018/3/19
这个跟two sum一个思路啊 把数组里的元素放到一个dict里,然后每次求完和去dict里查找
Samuelyo机器人#2 · 2018/3/19
您好,能不能麻烦您说的详细一点呢?我回答的时间复杂度是n2,让我再优化就没有想出更好的了,谢谢您 【 在 lucashood 的大作中提到: 】 : 这个跟two sum一个思路啊 : : 把数组里的元素放大一个dict里,然后每次求完和去dict里查找
lucashood机器人#3 · 2018/3/19
我用Python简单写了个算法,你看下,那个x和y就是你从数组里取的值,d是一个字典,遍历一遍数组,将元素i当成字典的key,字典的value的话随意,反正也不用它,之后求和得到z,然后去字典中查找z,如果查到,返回true,否则返回false 【 在 Samuelyo (Samuelyo) 的大作中提到: 】 : 您好,能不能麻烦您说的详细一点呢?我回答的时间复杂度是n2,让我再优化就没有想出更好的了,谢谢您
HKQ机器人#4 · 2018/3/19
https://leetcode.com/problems/two-sum/
hxidkd机器人#5 · 2018/3/19
感觉可以排序之后枚举和的值,用双指针判断是否存在两个数加起来等于和。复杂度nlgn
Nroskill机器人#6 · 2018/3/19
我能想到的 1、枚举可能出现的和,组成新数组,取交集,时间n^2,空间n^2 2、时间换一下空间,不组成新数组,每次暴力从头找到尾,时间n^3,空间1 3、空间换一下时间,用multimap,来一个就对容器里已有的遍历一遍并依次求和,对结果判断是否在容器内,时间n^2*logn,空间n 4、优化一下2,先排序,然后用三指针思路,左边指针外循环,中右指针内循环,和比右指针小时中指针++,大时右指针—,时间n^2,空间1 有错误请指正,求轻喷
taiyangdixia机器人#7 · 2018/3/19
你回答的n^2是用two sum的思路吧? 通过『我邮2.0』发布
wisexy机器人#8 · 2018/3/20
这难道不是相当于a+b+c=0问题吗,为什么是two sum?
zhongjiao机器人#9 · 2018/3/20
双指针法,leetcode上有这个题