leetcode 1 两数之和

//Time:O(n),Space:O(n)
//语言:C++11
class Solution 
{
public:
    vector<int> twoSum(vector<int>& nums, int target) 
    {
        vector<int> res={-1,-1};
        unordered_map<int,int> hash_map;
        for(int i=0;i<nums.size();i++)
        {
            int another=target-nums[i];
            if(hash_map.count(another))
            {
                res=vector<int>({hash_map[another],i});
                break;
            }

            hash_map[nums[i]]=i;
        }

        return res;
    }
};
//换一种语言来实现,用经典C++语言来实现
class Solution 
{
public:
    vector<int> twoSum(vector<int>& nums, int target) 
    {
          vector<int> ret;
          
          map<int,int> hash_map;

          for(int i=0;i<nums.size();i++)
          {
              int another=target-nums[i];

              if(hash_map.count(another))
              {
                   ret.push_back(hash_map[another]);
                   ret.push_back(i);
                   break;
              }

              hash_map[nums[i]]=i;
          }

          return ret;        
    }
};

 

posted @ 2020-01-05 12:46  repinkply  阅读(5)  评论(0)    收藏  举报