文章最前: 我是Octopus,這個名字來源於我的中文名--章魚;我熱愛編程、熱愛算法、熱愛開源。所有源碼在我的個人github ;這博客是記錄我學習的點點滴滴,如果您對 Python、Java、AI、算法有興趣,可以關注我的動態,一起學習,共同進步。
相關文章:
- LeetCode:55. Jump Game(跳遠比賽)
- Leetcode:300. Longest Increasing Subsequence(最大增長序列)
- LeetCode:560. Subarray Sum Equals K(找出數組中連續子串和等於k)
文章目錄:
源碼地址:https://github.com/zhangyu345293721/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]
輸出: true
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
java實現方法1:
/**
* 數組中是否包含重複的數
*
* @param nums 數組
* @return 布爾值
*/
public boolean containsDuplicate(int[] nums) {
Map<Integer, Integer> map = new HashMap<>();
for (int num : nums) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() > 1) {
return false;
}
}
return true;
}
時間複雜度:O(n)
空間複雜度:O(n)
python實現方法1:
def contains_duplicate(nums: List[int]) -> bool:
'''
判斷是否有重複的數
Args:
nums: 數組
Returns:
布爾值
'''
number_dict = {}
for num in nums:
if num in number_dict:
number_dict[num] += 1
else:
number_dict[num] = 1
for num in number_dict.values():
if num > 1:
return True
return False
時間複雜度:O(n)
空間複雜度:O(n)
java實現方法2:
/**
* 數組中是否包含重複的數
*
* @param nums 數組
* @return 布爾值
*/
public boolean containsDuplicate2(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
if (set.contains(num)) {
return true;
} else {
set.add(num);
}
}
return false;
}
時間複雜度:O(n)
空間複雜度:O(n)
python實現方式2:
def contains_duplicate2(nums: List[int]) -> bool:
'''
判斷是否有重複的數
Args:
nums: 數組
Returns:
布爾值
'''
number_set = set()
for num in nums:
if num in number_set:
return True
else:
number_set.add(num)
return False
時間複雜度:O(n)
空間複雜度:O(n)