Leetcode 220. 存在重复元素 III (Contains Duplicate III)

题目

Given an array of integers, find out whether there are two distinct indices i and j in the array

such that the absolute difference between nums[i] and nums[j] is at most t

and the absolute difference between i and j is at most k.

Example1

Input: nums = [1,2,3,1], k = 3, t = 0

Output: true

Example2

Input: nums = [1,0,1,1], k = 1, t = 2

Output: true

Example3

Input: nums = [1,5,9,1,5,9], k = 2, t = 3

Output: true

思路

先给一个暴力解法,复杂度\(O(N*K)\),使用滑动窗口来求解。还能优化成\(O(NlogN)\)

Code

class Solution:
    def containsNearbyAlmostDuplicate(self, nums: List[int], k: int, t: int) -> bool:
        if len(nums) < 2 or k < 1 or t < 0:
            return False
        if t == 0 and len(set(nums)) == len(nums):
            return False
        for i in range(len(nums) - 1):
            # 窗口的长度为k,但不能超过数组nums的长度
            for j in range(i + 1, min(len(nums), i + k + 1)):
                if abs(nums[i] - nums[j]) <= t:
                    return True
        return False

原文地址:https://www.cnblogs.com/yufeng97/p/12602295.html

时间: 2024-10-08 13:25:43

Leetcode 220. 存在重复元素 III (Contains Duplicate III)的相关文章

Leetcode 220.存在重复元素III

存在重复元素III 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ?. 示例 1: 输入: nums = [1,2,3,1], k= 3, t = 0 输出: true 示例 2: 输入: nums = [1,0,1,1], k=1, t = 2 输出: true 示例 3: 输入: nums = [1,5,9,1,5,9], k = 2, t = 3 输出: fals

LeetCode:存在重复元素【217】

LeetCode:存在重复元素[217] 题目描述 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 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 题目分析 对于数据结构HashSet, 我们首先需要知道的是HashSet是不包含重复元素的,其次是存储

leetcode 217. 存在重复元素(Contains Duplicate)

目录 题目描述: 示例 1: 示例 2: 示例 3: 解法: 题目描述: 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 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 解法: class Solution { public: bool contain

LeetCode 217. 存在重复元素

题目链接:https://leetcode-cn.com/problems/contains-duplicate/ 给定一个整数数组,判断是否存在重复元素. 如果任何值在数组中出现至少两次,函数返回 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 class Solution { 2 publ

219. 数组重复元素2 Contains Duplicate II

Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k. public class Solution { public bool ContainsNearby

leetcode——217.存在重复元素

class Solution: def containsDuplicate(self, nums: List[int]) -> bool: a=set(nums) if len(a)<len(nums): return True else: return False 执行用时 :168 ms, 在所有 Python3 提交中击败了73.83%的用户 内存消耗 :19.1 MB, 在所有 Python3 提交中击败了19.02%的用户 别人32ms的范例: class Solution: def

LeetCode:Contains Duplicate - 判断数组内是否有重复元素

1.题目名称 Contains Duplicate(判断数组内是否有重复元素) 2.题目地址 https://leetcode.com/problems/contains-duplicate/ 3.题目内容 英文:Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in

LeetCode:Contains Duplicate II - 判断数组内是否有重复元素2

1.题目名称 Contains Duplicate II(判断数组内是否有重复元素2) 2.题目地址 https://leetcode.com/problems/contains-duplicate-ii/ 3.题目内容 英文:Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nu

Leetcode: . 存在重复元素 III

# . 存在重复元素 III 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ?. 示例 1: 输入: nums = [1,2,3,1], k = 3, t = 0 输出: true 示例 2: 输入: nums = [1,0,1,1], k = 1, t = 2 输出: true 示例 3: 输入: nums = [1,5,9,1,5,9], k = 2, t = 3