新手刷題:70道力扣題
阿新 • • 發佈:2022-02-10
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 inenumerate(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