由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一下careercup一道题
相关主题
大家帮忙看看这个4sum怎么就不对另开一贴unordered_set 对于 vector 和 pair 的has
[google面试]iterator访问问个最近面试里的题目
问一道题how to query in the universal hash table?
Facebook Phone InterviewL家的高频题merge k sorted arrays giving iterators求讨论!
Given an int array and an int value. Find all pairs in arrG题一道(1)
报个G的电面Careercup question.
关于Hash_mapO(N) sort integer array
T家电面面经并且不解为何被秒拒这题怎么做?
相关话题的讨论汇总
话题: iter话题: num话题: hash话题: int话题: map
进入JobHunting版参与讨论
1 (共1页)
w***y
发帖数: 6251
1
第4版里面的一道题目
19.11 Design an algorithm to find all pairs of integers within an array
which sum to a specified value.
解法不复杂, 不过看样子是不用考虑array里面有重复数字的. 这样条件就简单很多-
-当然这个题如果要考虑重复数字, 意义也不大,完全就是为了题目更繁琐一点hehe
但是如果题目没有明确说, 怎么知道要不要考虑有重复数字的?
w****x
发帖数: 2483
2

多-
对两边夹的那个算法做一点修改.
把之前match的pair用hash存起来, 之后遍历的每个数字检查hash table, 如果
match的话就直接i++或j--(跳过)

【在 w***y 的大作中提到】
: 第4版里面的一道题目
: 19.11 Design an algorithm to find all pairs of integers within an array
: which sum to a specified value.
: 解法不复杂, 不过看样子是不用考虑array里面有重复数字的. 这样条件就简单很多-
: -当然这个题如果要考虑重复数字, 意义也不大,完全就是为了题目更繁琐一点hehe
: 但是如果题目没有明确说, 怎么知道要不要考虑有重复数字的?

w***y
发帖数: 6251
3
第4版里面的一道题目
19.11 Design an algorithm to find all pairs of integers within an array
which sum to a specified value.
解法不复杂, 不过看样子是不用考虑array里面有重复数字的. 这样条件就简单很多-
-当然这个题如果要考虑重复数字, 意义也不大,完全就是为了题目更繁琐一点hehe
但是如果题目没有明确说, 怎么知道要不要考虑有重复数字的?
w****x
发帖数: 2483
4

多-
对两边夹的那个算法做一点修改.
把之前match的pair用hash存起来, 之后遍历的每个数字检查hash table, 如果
match的话就直接i++或j--(跳过)

【在 w***y 的大作中提到】
: 第4版里面的一道题目
: 19.11 Design an algorithm to find all pairs of integers within an array
: which sum to a specified value.
: 解法不复杂, 不过看样子是不用考虑array里面有重复数字的. 这样条件就简单很多-
: -当然这个题如果要考虑重复数字, 意义也不大,完全就是为了题目更繁琐一点hehe
: 但是如果题目没有明确说, 怎么知道要不要考虑有重复数字的?

t*******e
发帖数: 274
5
我用hashtable做的话,怎么避免输出(3,4),(4,3),而只输出一组(假设sum = 7)
t*******e
发帖数: 274
6
如果用hashtable的话,如何避免重复输出,例如:sum=7,输出(3,4),(4,3)?
d*******3
发帖数: 58
7
把较小的一个值做为key,(3,4),(4,3)不就是同一个pair了么,
N*****Z
发帖数: 70
8
难道居然不是先做sort?

【在 t*******e 的大作中提到】
: 我用hashtable做的话,怎么避免输出(3,4),(4,3),而只输出一组(假设sum = 7)
t*******e
发帖数: 274
9

不是太明白你的意思,能具体说一下么?

【在 d*******3 的大作中提到】
: 把较小的一个值做为key,(3,4),(4,3)不就是同一个pair了么,
Z**********4
发帖数: 528
10
这题不用把一个pair都存 遇到3就存4 遇到4就存3好了 如果要避免重复就这样:遇到3
的时候存4 然后遇到4的时候说明找到一对了 这个时候把3也存进去 下次不管遇到3还
是4都不管 整个过程不用sort

不是太明白你的意思,能具体说一下么?

【在 t*******e 的大作中提到】
:
: 不是太明白你的意思,能具体说一下么?

t*******e
发帖数: 274
11
我想我的问题是在于输出的时候,按你的意思,把(3,4),(4,3)都存在
hashtable中,如果我想只输出其中一组结果,该怎么做呢?
d*******3
发帖数: 58
12
Zhuimeng1314说的对,就是这个意思,这是hash的解法。(3,4),(4,3)不需要都
存,只存一个3就行了
敲了下代码,不知道有木有bug...
vector > twoSum(vector& num,int target)
{
vector >ans;
hash_map num_map;
hash_map pair_map;
typedef pair IntPair;
for(int i=0;i num_map.insert(IntPair(num[i],1));
for(int i=0;i {
if(num_map.find(target-num[i])!=num_map.end())//for num[i],exist
target-num[i]
{
int smaller_num=min(num[i],target-num[i]);
if(pair_map.find(smaller_num)==pair_map.end())//pair not found
{
vector tmp;
tmp.push_back(num[i]);
tmp.push_back(target-num[i]);
ans.push_back(tmp);
pair_map.insert(IntPair(smaller_num,1));
}
}
}
return ans;
}
test case1:{3,4,9,5,2,5,5,4,3},target=7
output:{3,4},{2,5}
test case2:{3,4,3,2,3,2,3,4,4},target=6
output:{3,3},{4,2}
如果sort的话,个人感觉用wwwyhx说的那种两边夹的方法,就不需要hash了,这不是
3sum的简单版
么?
Z**********4
发帖数: 528
13
我的意思是不用整个pair用一个hash map就可以了。不过我想做点改动 利用hash里面
key对应的value来标志对(3,4)已经找过了,下次不论是(4,3)还是(3,4)都视
而不见。
hash_map hash;
vector::iterator iter;
vector result;
for(iter = array.begin(); iter!= array.end(); iter++){
if(hash.find(*iter) == hash.end() && hash.find(n-*iter) == hash.end(
)){
hash[n-*iter] = 1; //这是第一次遇见3的时候,存入 4->1
}
else if(hash[*iter]==1){ //发现hash里面有4,而且value是1 就算找到了
(3,4)
hash[*iter]=0; //将hash[*iter]置位成0这样下次无论是出现3或者4
都不会进入这个block因为只有hash对应的是1的时候才会进入
stringstream ss;
if(*iter<=n/2)
ss << *iter <<" and "< else
ss << n-*iter <<" and "<<*iter< result.push_back(ss.str());
}
}

【在 d*******3 的大作中提到】
: Zhuimeng1314说的对,就是这个意思,这是hash的解法。(3,4),(4,3)不需要都
: 存,只存一个3就行了
: 敲了下代码,不知道有木有bug...
: vector > twoSum(vector& num,int target)
: {
: vector >ans;
: hash_map num_map;
: hash_map pair_map;
: typedef pair IntPair;
: for(int i=0;i
1 (共1页)
进入JobHunting版参与讨论
相关主题
这题怎么做?Given an int array and an int value. Find all pairs in arr
what is the internal implementation of Deque报个G的电面
考算法可以用stl吗?关于Hash_map
讨论一个题目T家电面面经并且不解为何被秒拒
大家帮忙看看这个4sum怎么就不对另开一贴unordered_set 对于 vector 和 pair 的has
[google面试]iterator访问问个最近面试里的题目
问一道题how to query in the universal hash table?
Facebook Phone InterviewL家的高频题merge k sorted arrays giving iterators求讨论!
相关话题的讨论汇总
话题: iter话题: num话题: hash话题: int话题: map