這是刷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 時間儘量...