您的位置:首页 > 其它

leetcode Two Sum hash

2014-12-11 17:00 246 查看
传送门:Two Sum

给定一个数组,求出其中和为target的两个数的位置,输入保证只有一组解

用map记录每个数出现的位置,然后对于数组中的数x,查找target - x是否出现过,出现则返回对应两个数的位置,否则记录x的出现的位置

class Solution {
public:
vector<int> twoSum(vector<int> &numbers, int target) {
vector <int> ans;
map <int,int> p;
for(int i = 0;i < numbers.size();i++)
{
int x = numbers[i];
int y = target - x;
if(p[y] != 0)
{
ans.push_back(p[y]);
ans.push_back(i+1);
return ans;
}
else
p[numbers[i]] = i + 1;
}
}
};


用dictionary记录每个数的出现的位置,然后同上

class Solution:
# @return a tuple, (index1, index2)
def twoSum(self, num, target):
p = {}
cnt = 0
for x in num:
y = target - x
if p.has_key(y):
return p[y],cnt+1
else:
p[x] = cnt + 1
cnt = cnt + 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: