LeetCode 1. 兩數之和(Two Sum)

LeetCode.jpg

兩數之和

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。

你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。

示例:

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

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

Python3實現

暴力循環

# @author:leacoder
# @des:   暴力循環  兩數之和  O(N*N)
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for index1,num1 in enumerate(nums):  #兩層循環
            for index2,num2 in enumerate(nums[index1+1:]):
                if num1 + num2 == target:
                    return [index1,index1+index2+1]
        return []

和固定利用差值diff

# @author:leacoder
# @des:   和固定利用差值diff 兩數之和 O(N)
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)-1):#循環  O(N)
            diff = target - nums[i]
            if diff in nums[i+1:]: #O(1)
                return [i,nums[i+1:].index(diff)+i+1]
        return []

GitHub鏈接:
https://github.com/lichangke/LeetCode
知乎個人首頁:
https://www.zhihu.com/people/lichangke/
個人Blog:
https://lichangke.github.io/
歡迎大家來一起交流學習

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。