leetcode每日一题-1:两数之和

leetcode每日一题-1:两数之和

链接

题目

在这里插入图片描述



分析

暴力

最简单的做法显然就是暴力,我们直接双重循环遍历寻找即可


哈希表

那么如何优化呢,我们可以先把数组都存入hashmap,然后遍历这个数组,然后找他对应的target-x是否存在,并且这个数不能是他本身



code

C++

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

        for(int i=0 ; i<nums.size() ; i++)
        {
            int idx = m[target - nums[i]];
            if(idx > 0 and idx - 1 != i)
            {
                return {i, idx - 1};
            } 
        }

        return {};
    }
};

java

class Solution {
    
    
    public int[] twoSum(int[] nums, int target) {
    
    
        Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
        for (int i = 0; i < nums.length; ++i) {
    
    
            if (hashtable.containsKey(target - nums[i])) {
    
    
                return new int[]{
    
    hashtable.get(target - nums[i]), i};
            }
            hashtable.put(nums[i], i);
        }
        return new int[0];
    }
}

рекомендация

отblog.csdn.net/qq_45826803/article/details/120958532