2017-12-04 15:33:07
LeetCode 刷题准备面试
分类刷题:Start -- Array
"need a more efficient way to check if the complements exists in the way.if the complements exists, we need to look up its index. the best way to maintain a mapping of each elements int the array to its index?
-- A hash table. "
public int[] twoSum(int[] nums, int target){ Map<Integer, Integer> map = new HashMap<>(); for(int index = 0; index < nums.length; index++) { map.put(nums[index],index); } for(int i = 0; i < nums.length; i++) { int complement = target - nums[i]; //precondition1: in the second iteration we check if each elements`s //complement (target - nums[i]) exists in the table. //precondition2: the complement must not be nums[i] itself if(map.containsKey(nums[i]) && map.get(nums[i]) != i){ return new int[] {i, map.get(complement)}; } } throw new IllegalArgumentException("No two sum solution"); }