題目:
給乙個list, 給乙個target. 問list中哪兩個數的和為target.
逐個求差.
用map[num]=index儲存資訊.
不需要預先把所有的值都放到map中, 因為遍歷到a的時候發現map裡面沒有b也沒關係, 遍歷到b的時候a就已經在map裡了.
class
solution
(object):
deftwosum
(self, nums, target):
""" :type nums: list[int]
:type target: int
:rtype: list[int]
"""map={}
for i in range(len(nums)):
a=nums[i]
b=target-a
if(not map.has_key(b)):
map[a]=i
else:
return [map[b],i]
逐個求和.
用numandpos這個自定義的類儲存數值和位置, 然後按照值排序.
i與j兩個游標分別在開始與結尾, 逐漸向中間靠攏, 若求出指定的和則結束.
class
numandpos:
num=0
pos=0
def__init__
(self, num, pos):
self.num=num
self.pos=pos
class
solution
(object):
deftwosum
(self, nums, target):
""" :type nums: list[int]
:type target: int
:rtype: list[int]
"""arr=
i=0for num in nums:
i+=1
arr=sorted(arr,key=lambda x:x.num)
i=0;
j=len(arr)-1
while (true
and iif(sum1
elif(sum>target):
j-=1
else:
return [arr[i].pos,arr[j].pos]
LeetCode 1 Two Sum 解題報告
題意 陣列nums中,有兩個元素的和是target,找出這兩個元素的位置。思路 維護乙個map,用陣列的元素的值做key,用元素的位置做value。遍歷nums,對每個num來說,如果map target num 有值的話,就返回map target num 和num的位置,如果沒有找到的話,就把n...
LeetCode 1 two sum 雙指標法
leetcode 1 two sum 給定乙個整數數列,找出其中和為特定值的那兩個數。你可以假設每個輸入都只會有一種答案,同樣的元素不能被重用。輸入陣列為亂序陣列,雙指標法,先拷貝輸入陣列進行公升序,從頭尾遍歷,相加比較,找到後通過遍歷輸出原陣列位置 void quicksort int list,...
LeetCode 1 Two Sum 兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那兩個整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 方法一 暴力法 暴力法很簡...