題目描述:
給定乙個整數陣列,判斷是否存在重複元素。
如果任何值在陣列**現至少兩次,函式返回 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.費馬小定理 在是素數的情況下,對任意整數都有。如果無法被整除,則有。可...