c**z 发帖数: 669 | 1 source code is as below,
vector twoSum(vector &numbers, int target) {
unordered_map m;
unordered_map::iterator it;
vector output;
int count = 1;
for ( int i = 0; i < numbers.size(); i++ )
{
if ( m.find( target - numbers[i] ) == m.end() )
m[numbers[i]];
else
{
for ( it = m.begin(); it != m.end(); it++ )
{
if ( it == m.find( target - numbers[i] ) )
{
output.push_back(count);
output.push_back(i+1);
break;
}
count++;
}
}
}
return output;
} |
l*****a 发帖数: 14598 | 2 why not use map[target-numbers[i]]?
搞的也嫩复杂了
【在 c**z 的大作中提到】 : source code is as below, : vector twoSum(vector &numbers, int target) { : unordered_map m; : unordered_map::iterator it; : vector output; : int count = 1; : : for ( int i = 0; i < numbers.size(); i++ ) : { : if ( m.find( target - numbers[i] ) == m.end() )
|
l*****a 发帖数: 14598 | 3 break能跳过两层循环吗
【在 c**z 的大作中提到】 : source code is as below, : vector twoSum(vector &numbers, int target) { : unordered_map m; : unordered_map::iterator it; : vector output; : int count = 1; : : for ( int i = 0; i < numbers.size(); i++ ) : { : if ( m.find( target - numbers[i] ) == m.end() )
|
b*****n 发帖数: 482 | 4 map的用法有点问题。map中的key-value pair在你的code中没有完全发挥作用,只对
key进行了find。实际上应该把key所对应的index存在value里,这样只要在map里找到
了targe-numbers[i],那它所对应的index也自然而然的获得了。
另外,获得output后,可以直接return。
【在 c**z 的大作中提到】 : source code is as below, : vector twoSum(vector &numbers, int target) { : unordered_map m; : unordered_map::iterator it; : vector output; : int count = 1; : : for ( int i = 0; i < numbers.size(); i++ ) : { : if ( m.find( target - numbers[i] ) == m.end() )
|
c**z 发帖数: 669 | 5 Thanks bluesun, 按你说的改了就过了,谢谢大牛! |
b*****n 发帖数: 482 | 6 You are welcome.
btw,我不是大牛,版上牛人多的是,hehe.
【在 c**z 的大作中提到】 : Thanks bluesun, 按你说的改了就过了,谢谢大牛!
|