1. 程式人生 > 其它 >新手刷題:70道力扣題

新手刷題:70道力扣題

Array陣列

1. 兩數之和

1、暴力解法:時間複雜度為N(N*N)

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(0, len(nums)):
            for j in range(i + 1, len(nums)):
                if nums[i] + nums[j] == target:
                    return [i,j]

2、雜湊字典

class Solution:
    
def twoSum(self, nums: List[int], target: int) -> List[int]: hashtable = {} # hashmap = dict(),建立一個空字典 for i, num in enumerate(nums): # enumerate() 函式用於將一個可遍歷的資料物件(如列表、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for迴圈當中。 if target - num in hashtable: # 迴圈遍歷num時,如果hashtable中已經有另一個元素(target-num)在雜湊表中,則直接返回這兩個元素的索引
return [hashtable[target - num], i] hashtable[num] = i # 否則將該元素和索引新增到字典中 return []

268. 丟失的數字

1、排序

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        # 將陣列排序之後,即可根據陣列中每個下標處的元素是否和下標相等,得到丟失的數字。
        nums.sort()
        for i, num in
enumerate(nums): if num != i: return i return len(nums)

2、雜湊集合

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        # 雜湊集合:首先遍歷陣列nums,將陣列中的每個元素加入雜湊集合,然後依次檢查從0到n的每個整數是否在雜湊集合中,不在雜湊集合中的數字即為丟失的數字。
        s = set(nums)
        for i in range(len(nums) + 1):
            if i not in s:
                return i