算法兩數之和 python版


方法一、暴力解法 -- 5s
復雜度分析:時間復雜度:O(n^2)空間復雜度:O(1)
length = len(nums)
for i in range(length):
    for j in range(i + 1, length):
        if nums[i] + nums[j] == target:
            return [i, j]
方法二:利用python切片 - 1s
復雜度分析:時間復雜度:O(n)空間復雜度:O(1)

解題關鍵主要是想找到 num2 = target - num1,是否也在list中,其實原理跟2次遍歷一樣
for i in range(len(nums)):
    if target-nums[i] in nums[i+1:]:
        return [i, nums.index(target-nums[i], i+1)]
方法三:哈希 -- 80ms
復雜度分析:時間復雜度:O(n)空間復雜度:O(n)

直接哈希記錄需要的key,遍歷到就是找到需要的值:
dic = {}
for i, num in enumerate(nums):
    if num in dic:
        return [dic[num], i]
    else:
        dic[target - num] = i
作者:aver58
鏈接:https://leetcode-cn.com/problems/two-sum/solution/1liang-shu-zhi-he-by-aver58/
來源:力扣(LeetCode)
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM