Leet code 第一題 兩數之和 JAVA python
public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map=new HashMap<>();
for (int i=0;i<nums.length;i++){
int complement= target-nums[i];
if(map.containsKey(complement)){
return new int[] {map.get(complement),i};
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
}先是求target減去第i個數字還需要多少,然後如果它在map裡就返回它和i的下標如果不存在,就把它和下標存進map。
例:【2,9,11,15】target=13i=0; nums[i]=2; complement=13-2=11;不在;把2,0存進mapi=1;nums[i]=9;complement=13-9=4;map:2 不在;把9,1存進mapi=2;nums[i]=11;complement=13-11=2;map:2,9 在; 返回下標0,2。Python:python裡的字典就像java裡的HashMap,以鍵值對的方式存在並操作class Solution:
def twoSum(self, nums, target):
map={}
r=[]
for i in range(0,len(nums)):
complement=target-nums[i]
if complement in map:
#print(complement)
r.append(map[complement])
r.append(i)
return r
else :
map[nums[i]]=i哈哈哈 折騰了好久 不過總算是弄出來了犯了個小錯誤 把增加map字典寫成了map={nums[i]:i},所以每次map都在重新整理而不是新增一個蠢蠢的