1. 程式人生 > >小白 初入leetcode筆記:兩數之和(python3)

小白 初入leetcode筆記:兩數之和(python3)

題目:

給定一個整數陣列和一個目標值,找出陣列中和為目標值的兩個數。

你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。

示例:

給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

1、range多用作迴圈,range(0,10)返回一個range物件,如想返回一個list,前面加上list轉換;

2、arange是numpy模組中的函式,使用前需要先匯入此模組,arange(3):返回array型別物件。

【注:range()中的步長不能為小數,但是np.arange()中的步長可以為小數

可以使用如下方法將range展開

In [8]: list(range(3))
Out[8]: [0, 1, 2]

本來想著用for進行遍歷,結果超時了,借鑑網上成功程式碼。

發現檢查成員的in語句速度飛快。然後使用index()就可以成功索引該數。

# -*- coding: utf-8 -*-
"""
Created on Wed Sep 19 14:21:43 2018

@author: ASUS
"""

class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        # 統計數列長度
        n = len(nums)
        for i in range(n):
            tem = target - nums[i]
            if tem in nums:
                y = nums.index(tem)
                if i == y:
                    continue
                else:
                    return i,y
                
            else:
                continue

心累。。。。。

最後發現最快的不是list,是在字典中進行操作,最快的36ms,神仙打架。。