leetcode刷题思路总结_两数之和

在这里插入图片描述解题思路
1.先将目标数组存入map映射,元素值与下标一一对应
2.遍历数组元素,判断target—nums【i】 是否存在(map里count())
3放回能够存在的下标

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
    std::vector<int> ans;
    std::unordered_map<int,int>  m;
    for(int i=0;i<nums.size();++i)
    {
        m[nums[i]]=i;
    }
        `	
     for(int i=0;i<nums.size();++i)
     {
         int t=target-nums[i];
         if(m.count(t)&&m[t]!=i)    //注意这里一定不能反了 先判断count()在判断m[t] 应为m【t】t可能任意数 导致map越界
         {
               ans.push_back(i);
               ans.push_back(m[t]);
               break;   
         }
         
     }
        
        return ans;
        
    }
};

猜你喜欢

转载自blog.csdn.net/ybxcsdn/article/details/88073977