[Easy]LeetCode第1题题解——两数之和

88 阅读1分钟

题目链接

两数之和

解法

我们可以使用哈希表记录数字,用空间换时间。遍历整个数组,如果每次遍历到的数与之前的某个数之和符合要求,则结束遍历;否则将其加入到哈希表中继续遍历。

代码

class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int> hash;
        for (int i = 0; i < nums.size(); i ++) {
            int r = target - nums[i];
            if (heap.count(r)) return {hash[r], i};
            heap[nums[i]] = i;
        }
        return {};
    }
};
func twoSum(nums []int, target int) []int {
	m := make(map[int]int)
	for i := 0; i < len(nums); i ++ {
		another := target - nums[i]
		if _, ok := m[another]; ok {
			return []int{m[another], i}
		}
		m[nums[i]] = i
	}
	return nil
}