Leetcode Day 1

Leetcode Day 1

1. 两数之和

// kreamyu
class Solution {
public:
    map<int,vector<int>> mp;

    vector<int> twoSum(vector<int>& nums, int target) {
        for(int i=0;i<nums.size();i++)
        {
            mp[nums[i]].push_back(i);
        }
        for(int i=0;i<nums.size();i++)
        {

            for(int j=0;j<mp[target-nums[i]].size();j++)
            {
                if(mp[target-nums[i]][j]!=i)
                {
                    return {i,mp[target-nums[i]][j]};
                }
            }

        }
        return {0,0};
    }
};

一道典型的hash题目,官方题解的答案比我的好不少

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> hashtable;
        for (int i = 0; i < nums.size(); ++i) {
            auto it = hashtable.find(target - nums[i]);
            if (it != hashtable.end()) {
                return {it->second, i};
            }
            hashtable[nums[i]] = i;
        }
        return {};
    }
};

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

y总的写法与官方题解几乎相同

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target)
    {
        vector<int> res;
        unordered_map<int,int> hash;
        for (int i = 0; i < nums.size(); i ++ )
        {
            int another = target - nums[i];
            if (hash.count(another))
            {
                res = vector<int>({hash[another], i});
                break;
            }
            hash[nums[i]] = i;
        }
        return res;
    }
};


作者:yxc
链接:https://www.acwing.com/solution/content/47/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @ 2021-11-19 11:41  kreamyu  阅读(35)  评论(0)    收藏  举报