1.两数之和(暴力&Hash)

1.两数之和(暴力&Hash)

题目传送门

思路:法1:暴力。时间复杂度 O ( n 2 ) O(n^2) .

法2:利用 u n o r d e r e d _ m a p unordered\_map 自带的哈希表实现每次 O ( 1 ) O(1) 查找。时间复杂度 O ( n ) O(n) .

p s ps: 第一次玩 L e e t c o d e Leetcode 。还有点不适应。

暴力代码:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        int l=nums.size();
         for(int i=0;i<l-1;i++)
            for(int j=i+1;j<l;j++)
            {
                if(nums[i]+nums[j]==target){
                     return {i,j};
                }
            }
        return {};
    }
};

Hash代码:

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int,int>mp;
        for(int i=0;i<nums.size();i++){
            if(mp.count(target-nums[i])){
                 return {mp[target-nums[i]],i};
            }
            mp[nums[i]]=i;
        }
        return {};
    }
};
原创文章 201 获赞 165 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45750972/article/details/105952977