LeetCode(初級演算法之陣列) 存在重複元素

2021-10-17 15:26:48 字數 1847 閱讀 2635

這是刷leetcode的第四天,原題位址。

解題思路

第二種方法

總結反思

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

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

輸入:[1

,2,3

,1]輸出: true

輸入:[1

,2,3

,4]輸出: false

輸入:[1

,1,1

,3,3

,4,3

,2,4

,2]輸出: true

此題可以先排序,從小到大,然後遍歷陣列,如果有某一值出現2次及以上,在遍歷到它的第乙個重複的數時,便可直接返回true,終止遍歷迴圈。而其的時間複雜度主要體現在排序演算法上。

但這種方法會超時,顯然不是乙個好的方法,而且沒有必要這麼麻煩。也可能是我寫的**過於冗餘以至於超時了。

其實這樣寫真的很冗餘,對於第乙個返回的地方,是因為第一次提交的時候,當乙個陣列只有乙個元素的時候,返回的是true,這顯然是不正確的,於是加上了這句。

class

solution

:def

containsduplicate

(self, nums: list[

int])-

>

bool:if

len(nums)==1

:return

false

for i in

range

(len

(nums)):

k = i+

1for k in

range

(len

(nums)-1

):if nums[i]

> nums[k]

: t = nums[i]

nums[i]

= nums[k]

nums[k]

= t j =

1for j in

range

(len

(nums)):

if nums[j]

== nums[j-1]

:return

true

return

false

看到乙個大佬的寫法,python中用一行**就解決了。很神奇!

於是自己去學習了一下set()的用法。

set() 函式建立乙個無序不重複元素集,可進行關係測試,刪除重複資料,還可以計算交集、差集、並集等。

這個方法真的太棒了,太絕了!

class

solution

:def

containsduplicate

(self, nums: list[

int])-

>

bool

:return

len(

set(nums))!=

len(nums)

今天學到了乙個新的函式的用法——set(),它是乙個無序不重複元素集,可以讓有重複元素的陣列或者是集合消除重複元素。

LeetCode初級演算法之陣列 存在重複

題目描述 給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列 現至少兩次,函式返回 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...

LeetCode初級演算法之陣列 加一

題目描述 題目描述 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2...

LeetCode初級演算法之陣列 283 移動零

給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。題目資訊 輸入 陣列 輸出 陣列 將原陣列的0都移動到後面 額外 空間o 1 時間儘量...