LeetCode-two sum:python解答陣列問題

Winterto1990發表於2016-04-12

問題描述:給定一個陣列和整型數字,找出陣列中兩個數加和為該整數的兩個數的下標

輸入:nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
輸出:return [0, 1].

首先,使用python來解題。對於列表的處理,python內建函式顯得很靈活,但執行效率上卻不讓人那麼滿意。


那麼,這裡就一起來回憶一下python中list資料型別的各種操作。


python中列表list可以存放各種資料型別(甚至包括你至今沒想到的型別,哈哈),比如說整型,字串,浮點數,類物件等。


初始化很簡單:test=[ ]#這是定義了一個空列表,並且下標是從0開始的,最後一個竟然會是-1,-len第一個元 素,len-1最後一個元素,呵呵


建立連續的list: test= range(1,5)      #即 L=[1,2,3,4],不含最後一個元素


取列表的長度length=len(test)


新增資料時,可以分為在尾部新增資料:test.append(var)   #追加元素;


還可以在指定下標下新增元素:test.insert(index,var)#插入元素;


將一個列表追加到列表中去,test.extend(list)  #追加list,即合併list到test上,另外 對於兩個列表的拼接可以直接使用加號:[1,2]+[3,4]=>[1,2,3,4]


刪除列表中的資料:根據指定位置index刪除 del test[index];


使用test.pop()刪除最後一個元素,也可以使用test.pop(index)刪除指定位置的元素


使用方法remove刪除:test.remove(index)


使用切片刪除:test=test[2:len(test)],這裡刪除了前兩個元素。


對列表進行排序:test.sort() 還有倒序排列:test.reverse()


列表還可以獲取某個元素在列表中出現的次數:test.count("winter")#搜尋元素"winter"在列表中出現的次數。

再來看看python對列表的遍歷方法:


1

for i in list:
    #todo some thing with list[i],但是這種方法有個缺陷就是獲取不到該元素i在列表中的位置
2

for index in range(len(list)):
    process(list[index])#這裡的index就是對應的列表中的位置
3 使用內建函式enumerate

for index, item in enumerate(sequence):
    process(index, item)#這樣使用鍵值對的形式,對列表進行遍歷 index為下標位置,item為值

對於列表處理,我剛開始是使用的 for value in nums:的方式去完成的,結果肯定是提示超時了。

接著我使用的是第二種遍歷方式,也是提示超時,使用第三種方式才AC,哎~ 效率可想而知了。

附程式碼:

class Solution(object):
    def twoSum(self, nums, target):
        for k1,v1 in enumerate(nums):
            for k2,v2 in enumerate(nums):
                if (v1+v2)==target and k2>k1:
                    return [k1,k2]

相關文章