存在重複(三種解法) leetcode

2021-10-03 21:41:43 字數 1281 閱讀 1009

題目描述:

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

如果任何值在陣列**現至少兩次,函式返回 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] 輸出: true

解題思路:

1、看到這道題,第乙個想法是首先要判斷陣列的長度,如果陣列的長度小於2則一定不存在重複的元素

2、第一種解題思路:將使用雙重for迴圈進行遍歷判斷是否有相同的元素

3、第二種解題思路:優化將雙重迴圈改為一層迴圈,使用陣列自帶的排序演算法,把題轉換為排序陣列中的重複項

4、第三種解題思路:利用hashset不允許重複元素的特性來判斷是有相同的元素

下面來分別進行實現:

第一種解題思路**:雙重for迴圈進行遍歷判斷是否有相同的元素

方法的優點:容易想出解題思路

方法的缺點:執行時間效率不高,會出現超時的現象

class

solution

boolean a =

false

;for

(int i =

0; i < nums.length-

1; i++)}

}return a;

}}

第二種解題思路:優化將雙重迴圈改為一層迴圈,使用陣列自帶的排序演算法,把題轉換為排序陣列中的重複項

方法的優點:**實現簡單

class

solution

arrays.

sort

(nums)

;for

(int i =

0; i < nums.length-

1; i++)}

return

false;}

}

第三種解題思路:利用hashset不允許重複元素的特性來判斷是有相同的元素

方法的優點:可以判斷多種型別的重複元素(不僅僅是數字)

方法的缺點:執行的效率不高,比較消耗記憶體

class

solution

for(

int a : nums)

return

false;}

}

leetcode 尋找重複數三種解法的比較

給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重複的整數,找出這個重複的數。給定乙個包含 n 1 個整數的陣列 nums,其數字都在 1 到 n 之間 包括 1 和 n 可知至少存在乙個重複的整數。假設只有乙個重...

LetCode PlusOne的三種解法

原題目 given a number represented as an array of digits,plus one to the number.題目的意思是乙個用陣列表示的數字,在加一後仍然用這個陣列表示,加一後位數可能會增加,故最好用vector表示.class plusone priva...

逆元的三種解法

逆元 當求解公式 a b m 時,由於b a時,a b 0,所以需變除法為乘法 設c是b的逆元,則有b c 1 mod m 則 a b m a b 1 m a b bc m ac mod m 即a b的模等於a b的逆元的模 1.費馬小定理 在是素數的情況下,對任意整數都有。如果無法被整除,則有。可...