刷題總結:使用Python-雜湊表——兩數之和、兩個陣列的交集
KW49/20:學習了雜湊表的知識,一共練習1個題目,現在總結如下。
第一題:兩數之和,給定一個陣列和一個目標值,在陣列中找出和為目標值的兩個數,並返回下標。
- 思路:首先想到的是雙重迴圈,列舉陣列中的每一個數,看target-x是否在陣列中。程式碼如下:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
n = len(nums)
for i in range(0, n):
for j in range(i+1, n):
if nums[i] + nums[j] == target:
return [i, j]
return []
但是上述雙重迴圈方法時間複雜度高,考慮使用雜湊表來降低時間複雜度。程式碼如下:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hash_table = dict()
for i, num in enumerate(nums):
if target - num in hash_table:
return [hash_table[target-num], i]
else:
hash_table[num] = i
第二題:兩個陣列的交集,給定兩個陣列,給出他們的交集。
- 思路:首先想到的是用集合給陣列去重,然後遍歷集合中的每一個數,看另一個集合中是否存在。程式碼如下:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
nums1 = set(nums1)
nums2 = set(nums2)
res = []
for num1 in nums1:
if num1 in nums2:
res.append(num1)
return res
也可以使用集合求交集的命令,程式碼更加簡化:
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
nums1 = set(nums1)
nums2 = set(nums2)
res = []
res = nums1 & nums2 # 集合求交集
# for num1 in nums1:
# if num1 in nums2:
# res.append(num1)
return res
相關文章
- 圖解兩數之和:雜湊表法圖解
- 雜湊查詢 兩數之和
- 程式碼訓練營第6天 | 雜湊表 242.有效的字母異位詞 349.兩個陣列的交集 202.快樂數 1.兩數之和陣列
- 力扣之兩個陣列的交集力扣陣列
- 程式碼隨想錄第6天 | ●雜湊表理論基礎●242.有效的字母異位詞●349. 兩個陣列的交集●202. 快樂數●1. 兩數之和陣列
- 兩數之和,返回陣列下標陣列
- 每日一練(46):兩個陣列的交集陣列
- 349.兩個陣列的交集|python陣列Python
- 力扣-349. 兩個陣列的交集力扣陣列
- leetcode 349. 兩個陣列的交集LeetCode陣列
- LeetCode-349-兩個陣列的交集LeetCode陣列
- [LeetCode 刷題] 1. 兩數之和LeetCode
- Day 6| 242.有效的字母異位詞 、349. 兩個陣列的交集 、 202. 快樂數 、 1. 兩數之和陣列
- #leetcode刷題之路1-兩數之和LeetCode
- 雜湊表的兩種實現
- LeetCode-350-兩個陣列的交集 IILeetCode陣列
- Leetcode——349-兩陣列交集LeetCode陣列
- 組隊刷LeetCode - 兩數之和LeetCode
- python實現給定一個數和陣列,求陣列中兩數之和為給定的數Python陣列
- Hash表實踐 —— 兩數之和
- 兩數之和
- 【leetcode 簡單】 第八十五題 兩個陣列的交集 IILeetCode陣列
- [LeetCode 刷題] 4. 尋找兩個有序陣列的中位數 (Hard)LeetCode陣列
- 每日一道演算法:兩陣列的交集演算法陣列
- 兩個有序陣列的中位數陣列
- 刷 LeetCode 跟著這個系列就行啦----兩數之和LeetCode
- 輸出陣列nums中兩數之和為target的對應下標陣列
- 一個小小的演算法題:求兩數之和演算法
- 第23章:列表、陣列和雜湊表陣列
- 1. 兩數之和
- 尋找兩個有序陣列的中位數陣列
- 給定陣列中找到最大的兩個數陣列
- 4. 兩個排序陣列的中位數排序陣列
- PHP 不定個數 de 陣列取交集PHP陣列
- 從雜湊表(HashTable)的角度深入理解《PHP 陣列的雜湊碰撞攻擊》PHP陣列
- Android技能樹 — 陣列,連結串列,雜湊表基礎小結Android陣列
- 兩個月刷完Leetcode前400題經驗總結LeetCode
- 陣列中出現兩次的數陣列