原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-easy/x248f5/
解法一(java):
class Solution {
public boolean containsDuplicate(int[] nums) {
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums.length; j++) {
if (i != j && nums[i] == nums[j]) {
return true;
}
}
}
return false;
}
}
思路:冒泡排序思路,循环两次数组,校验元素中是否存在除本身以外的其他元素
2023-06-25 start:
解法二(go):
func containsDuplicate(nums []int) bool {
set := make(map[int]bool)
for _,num := range(nums) {
if set[num] {
return true
} else {
set[num] = true
}
}
return false
}
思路:使用一个map,map的key是数组的元素,value为是否出现过两次以上,然后遍历数组,如果map以当前数组元素为key值得到的value为true则直接返回true,否则将当前元素的key的map设置为true。遍历结束后,则直接返回false。
解法三(python):
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
nums.sort()
for i in range(len(nums)-1):
if nums[i] == nums[i+1]:
return True
return False
思路:将数组元素进行排序,如果有重复的元素,那么这两个元素一定是相邻的,我们只需要遍历一次,找到相邻的元素是否存在相同的值即可。
解法四(python):
class Solution:
def containsDuplicate(self, nums: List[int]) -> bool:
return len(nums) != len(set(nums))
思路:判断原数组和去重后的数组长度是否相等,如果不相等则原数组中一定存在重复的元素,否则就是不存在重复的元素。
end