leecode#存在重复元素#存在重复元素||

题目描述:

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

分析:

用set()搞定

代码:

class Solution(object):
    def containsDuplicate(self, nums):
        return len(nums) != len (set(nums))

题目描述:

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

分析:

哈希表

从左到右遍历nums,当遍历到下标 i 时,若存在下标 j < i 使得nums[i] = nums[j] 且 i - j < k ,即找到符合下标

如果在下标 i 之前存在多个元素都和 nums[i] 相等,为了判断是否存在满足 nums[i]=nums[j] 且 i - j ≤k 的下标 j,应该在这些元素中寻找下标最大的元素,将最大下标记为 j,判断 i - j≤k 是否成立。

代码:

class Solution:
    def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
        pos = {}
        for i, num in enumerate(nums):
            if num in pos and i - pos[num] <= k:
                return True
            pos[num] = i
        return False

你可能感兴趣的:(数据结构,leetcode,算法)