LeetCode 利用雜湊表求解

2021-10-06 09:48:44 字數 2143 閱讀 9590

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通過乙個固定的演算法函式...

雜湊表(雜湊表)

雜湊表是最基礎的資料結構之一,利用鍵值對儲存並檢索資料的一種非線性結構。在其它各種結構線性表 樹等資料結構中,記錄在結構中的位置是隨機的,和記錄關鍵字之間不存在確定的關係,因此,在結構中查詢記錄時需進行一系列和關鍵字的 比較 的基礎上。在順序查詢時,比較的結果為 與 兩種可能 在折半查詢 二叉排序樹...