(LeetCode 面试经典 150 题 ) 1. 两数之和 (哈希表)
题目:1. 两数之和
思路:哈希表,时间复杂度0(n)。
C++版本:
class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int,int> mp;for(int i=0;i<nums.size();i++){if(mp.find(target-nums[i])!=mp.end()){return {mp[target-nums[i]],i};}mp[nums[i]]=i;}return {};}
};
JAVA版本:
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer,Integer> mp=new HashMap<>();for(int i=0;i<nums.length;i++){if(mp.containsKey(target-nums[i])){return new int[]{mp.get(target-nums[i]),i};}mp.put(nums[i],i);}return new int[]{};}
}
GO版本:
func twoSum(nums []int, target int) []int {mp:=map[int]int{}for i:=0;i<len(nums);i++ {if x,ok :=mp[target-nums[i]]; ok {return []int{x,i}}mp[nums[i]]=i}return []int{}
}