【LeetCode】0001——兩數之和

題目描述

在這裏插入圖片描述

解題思路

在這裏插入圖片描述

Java代碼

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

Python3代碼

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        if len(nums) < 2:
            return [-1, -1]
        
        # 記錄結果
        res = [-1, -1]
        # 字典,相對於哈希表
        dic = {}

        for i in range(len(nums)):
            tmp = target - nums[i]
            if tmp in dic.keys():
                res[0] = dic[tmp]
                res[1] = i
                break
            dic[nums[i]] = i
        return res

C++代碼

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        vector<int>  result;

		map<int, int> tmpmap; //key爲nums的值,value爲nums對應的下標

		for (int i = 0; i < nums.size(); i++) {
			int tmp = target - nums[i];
			if (tmpmap.count(tmp) != 0) {
				result.push_back(tmpmap[nums[i]]);
				result.push_back(i);
				break;
			}
			tmpmap[nums[i]] = i;
		}

		return result;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章