leetcode 217 存在重複元素

2021-10-24 22:34:13 字數 1403 閱讀 1459

給定乙個整數陣列,判斷是否存在重複元素。

如果任意一值在陣列**現至少兩次,函式返回 true 。如果陣列中每個元素都不相同,則返回 false 。

輸入: [1,2,3,1]

輸出: true

輸入: [1,2,3,4]

輸出: false

一共有三種方法,分別是字典法,排序法和set集合法。

字典法遍歷列表,把元素依次放入字典中,數值作為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...