Crack LeetCode 之 1. Two Sum
阿新 • • 發佈:2018-12-16
https://leetcode.com/problems/two-sum/
基本思路是做一個hanshmap,然後迭代查詢/插入這個hashmap。時間複雜度是O(n),空間複雜度也是O(n)。下文給出了C++和python的程式碼,python的程式碼非常簡潔,只有7行。
struct Solution { vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; if(nums.empty() || nums.size()<2) return res; std::unordered_map<int, int> hashmap; for(int i=0;i<nums.size();i++) { if(hashmap.find(target-nums[i])!=hashmap.end()) { res.push_back(hashmap[target-nums[i]]); res.push_back(i); return res; } hashmap[nums[i]] = i; } return res; } };
class Solution:
def twoSum(self, nums, target):
lookup = dict(((v, i) for i, v in enumerate(nums)))
return next(( [i, lookup.get(target-v)]
for i, v in enumerate(nums)
if lookup.get(target-v, i) != i), None)