关闭

Two Sum(Medium)

标签: 数组哈希hashleetcode
101人阅读 评论(0) 收藏 举报
分类:

1.遍历一次nums,利用map记录已经遍历过的nums[i],并记录其index :i+1

2.每次求出b=target-nums[i],检测b是否在map中,如果在,则已经得到答案,否则,把nums[i]存到map里面


AC代码:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int> exist;
        vector<int> ans(0);
        for(int i=0;i<nums.size();i++)
        {
            int b=target-nums[i];
            if(exist.find(b)!=exist.end())
            {//如果哈希表里面已经存在b,则压入ans中,并return,b先于nums[i]放入哈希表,所以b的index肯定小于nums[i]
                ans.push_back(exist[b]);
                ans.push_back(i+1);
                return ans;
            }
            else
            {//找不到,即和不为target,则把nums[i]放入哈希表
                exist[nums[i]]=i+1;
            }
        }
        
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:43124次
    • 积分:1637
    • 等级:
    • 排名:千里之外
    • 原创:124篇
    • 转载:3篇
    • 译文:0篇
    • 评论:8条
    自建博客
    文章分类
    最新评论