Leetcode 220.存在重复元素III

存在重复元素III

给定一个整数数组,判断数组中是否有两个不同的索引 ij,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 ij 之间的差的绝对值最大为 ?

示例 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

输出: false

 1 import java.util.TreeSet;
 2
 3 public class Solution{
 4     public boolean containsNearbyAlmostDuplicate(int[] nums,int k,int t){
 5         if(nums==null||nums.length==0||k<=0) return false;
 6         TreeSet<Long> ts=new TreeSet();
 7         for(int i=0;i<nums.length;i++){
 8             Long right=ts.floor((long)nums[i]+t);
 9             Long left=ts.ceiling((long)nums[i]-t);
10             if(right!=null&&left!=null&&right>=left) return true;
11             ts.add((long)nums[i]);
12             if(i>=k)//i>k说明nums[i]之前至少已经有k个不相同的元素(否则早就返回true)
13                 ts.remove((long)nums[i-k]);
14         }
15         return false;
16     }
17 }

 

原文地址:https://www.cnblogs.com/kexinxin/p/10203054.html

时间: 2024-11-06 03:41:59

Leetcode 220.存在重复元素III的相关文章

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: n

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

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 220】 Contains Duplicate III

问题描述:判断数组中是否存在<ai aj> abs(ai - aj)<=t  && abs(i - j) <=k: 问题分析:需要一个数据结构来维护满足条件k.单纯暴力,会超时.假设当前元素num[i]我只需要判断 i- k -1 到 i之间的元素的关系就可以了.假设当前元素是num[i], 另一个元素a(multiset中的),他们满足 | a - num[i]|<=t   可得到 num[i] - t  <= a <=  num[i] + t.

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

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