力扣练习之存在重复元素

我爱海鲸 2023-06-25 18:05:48 初级算法

简介初级算法、go、python

原题出处: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

你好:我的2025