python的dict採用了雜湊表,最低能在 o(1)時間內完成搜尋。下面幾道題就是利用dict來解答
【簡單】存在重複元素
給定乙個整數陣列,判斷是否存在重複元素。
如果任意一值在陣列**現至少兩次,函式返回true
。如果陣列中每個元素都不相同,則返回false
。
示例 1:
輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
示例 3:
輸入: [1,1,1,3,3,4,3,2,4,2]
輸出: true
class solution:
def containsduplicate(self, nums: list[int]) -> bool:
d = {}
for number in nums:
if str(number) not in d.keys():
d[str(number)] = 1
else:
return true
return false
【簡單】兩個陣列的交集 ii
給定兩個陣列,編寫乙個函式來計算它們的交集。
示例 1:
輸入: nums1 = [1,2,2,1], nums2 = [2,2]
輸出: [2,2]
示例 2:
輸入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
輸出: [4,9]
說明:輸出結果中每個元素出現的次數,應與元素在兩個陣列**現的次數一致。
我們可以不考慮輸出結果的順序。
class solution:
def intersect(self, nums1: list[int], nums2: list[int]) -> list[int]:
# 利用hashmap
# 輸出陣列
output =
# 記錄乙個陣列中的存在的數字和對應出現的次數
d = {}
for num in nums1:
d[num] = d.setdefault(num, 0) + 1
# 遍歷第二個陣列,檢查數字在 hashmap 中是否存在,
# 如果存在且計數為正,則將該數字新增到答案並減少 hashmap 中的計數
for num in nums2:
if num in d and d[num] > 0:
d[num] = d[num]-1
return output
【簡單】兩數之和
給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。
你可以假設每種輸入只會對應乙個答案。但是,陣列中同乙個元素不能使用兩遍。
示例:給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
class solution:
def twosum(self, nums: list[int], target: int) -> list[int]:
if len(nums) == 2:
return [0,1]
# 在python中列表字典的即為雜湊型別, 新建立乙個空字典用來儲存數值及其在列表中對應的索引
dict1 = {}
# 遍歷一遍列表對應的時間複雜度為o(n)
for idx in range(0, len(nums)):
# 相減得到另乙個數值
num = target - nums[idx]
# 如果另乙個數值不在字典中,則將第乙個數值及其的索引報錯在字典中
# 因為在字典中查詢的時間複雜度為o(1),因此總時間複雜度為o(n)
if num not in dict1:
dict1[nums[idx]] = idx
# 如果在字典中則返回
else:
return [dict1[num], idx]
leetcode探索雜湊表(一)
雜湊表是一種資料結構,它使用雜湊函式組織資料,以支援快速插入和搜尋 兩個陣列的交集 給定兩個陣列,編寫乙個函式來計算它們的交集。示例 1 輸入 nums1 1,2,2,1 nums2 2,2 輸出 2 示例 2 輸入 nums1 4,9,5 nums2 9,4,9,8,4 輸出 9,4 說明 輸出結...
雜湊表 雜湊表
一 定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。雜湊表的做法其實很簡單,就是把key通過乙個固定的演算法函式...
雜湊表(雜湊表)
雜湊表是最基礎的資料結構之一,利用鍵值對儲存並檢索資料的一種非線性結構。在其它各種結構線性表 樹等資料結構中,記錄在結構中的位置是隨機的,和記錄關鍵字之間不存在確定的關係,因此,在結構中查詢記錄時需進行一系列和關鍵字的 比較 的基礎上。在順序查詢時,比較的結果為 與 兩種可能 在折半查詢 二叉排序樹...