給定乙個整數陣列,判斷是否存在重複元素。
如果任意一值在陣列**現至少兩次,函式返回 true 。如果陣列中每個元素都不相同,則返回 false 。
輸入: [1,2,3,1]一共有三種方法,分別是字典法,排序法和set集合法。輸出: true
輸入: [1,2,3,4]
輸出: false
字典法遍歷列表,把元素依次放入字典中,數值作為key。在前面新增乙個判斷元素是否在字典內,如果是則返回true,若遍歷完列表還是沒有返回,則返回false。
排序法對列表排序,迴圈列表,根據下標判斷nums[i] == nums[i+1]
,如果有就返回true,否則false
集合法直接判斷列表長度與被轉成集合的列表的長度是否相等,如果相等,則返回false,不相等返回true
需要注意新增判空條件。列表的排序只能用sorted()
字典法
if
len(nums)==0
:return
false
new_dict =
dict()
for i,j in
enumerate
(nums)
:if j in new_dict:
return
true
new_dict[j]
= ireturn
false
排序法if
len(nums)==0
:return
false
nums =
sorted
(nums)
for i in
range
(len
(nums)-1
):if nums[i]
== nums[i+1]
:return
true
return
false
集合法if
len(nums)==0
:return
false
return
notlen
(nums)
==len
(set
(nums)
)
復 雜度
分析
:\color
複雜度分析:
字典法需要遍歷列表,所以時間複雜度為o(n),字典法需要儲存n個元素,所以是o(n)。
排序法的時間複雜度為o(nlogn),這是排序的最快速度,空間複雜度為o(1)
集合法的時間複雜度為o(n),因為轉換set需要遍歷一次,空間複雜度是o(n),也是因為set的儲存空間
LeetCode217 存在重複值
將陣列元素作為k鍵,對應下標作為v值存入雜湊表,當陣列中存在重複的元素的時候,存入雜湊表的時候會出現丟鍵的情況,因為雜湊表的k值是不允許重複的。所以說,將資料元素存入雜湊表後嗎,比較兩者的長度,如果長度一致,表示沒有重複元素,返回false,如果長度不一致,代表存在重複元素,返回true值 clas...
leetcode 217 存在重複元素
給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列中出現至少兩次,函式返回 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 輸出 ...
LeetCode217 存在重複元素
題目 如果任何值在陣列 現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。class solution object def containsduplicate self,nums type nums list int rtype bool flag 0 if nums...