算法系列——Contains Duplicate III
来源:互联网 发布:参加java培训班有用吗 编辑:程序博客网 时间:2024/06/05 18:12
题目描述
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.
实现思路
给定一个整数数组,判断其中是否存在两个不同的下标i和j满足:| nums[i] - nums[j] | <= t 并且 | i - j | <= k。
利用TreeSet ceiling操作或者floor操作,当
set.ceiling(nums[i]-t)<=nums[i]+t 则必然set中必然存在一个nums[j] 使得 nums[i] - nums[j] | <= t。
同时我们利用维护一个大小为 k的滑动窗口,遍历数组即可。
程序实现
public class Solution { public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { if(k<1||t<0) return false; TreeSet<Long> set=new TreeSet<Long>(); for(int i=0;i<nums.length;i++){ if(set.ceiling((long)nums[i]-(long)t)!=null && set.ceiling((long)nums[i]-(long)t)<=(long)nums[i]+(long)t) return true; set.add((long)nums[i]); //保持set中最多有k个元素 if(i>=k) set.remove((long)nums[i-k]); } return false; }}
阅读全文
0 0
- 算法系列——Contains Duplicate III
- 算法系列——Contains Duplicate
- 算法系列——Contains Duplicate II
- 220. Contains Duplicate III—medium
- LeetCode 之 Contains Duplicate I II III — C++ 实现
- leetcode - Contains Duplicate III
- [leetcode] Contains Duplicate III
- Contains Duplicate III
- LeetCode Contains Duplicate III
- Leetcode220-Contains Duplicate III
- Leetcode_220 Contains Duplicate III
- LeetCode Contains Duplicate III
- [LeetCode] Contains Duplicate III
- 220Contains Duplicate III
- Contains Duplicate III
- LeetCode Contains Duplicate III
- LeetCode | Contains Duplicate III
- Contains Duplicate III
- POJ-1087 二分图匹配,最大流。
- Web服务器使用JSP来创建网页的步骤
- vi命令
- 『数据结构』RMQ 问题
- 算法系列——Contains Duplicate II
- 算法系列——Contains Duplicate III
- linux之如何在任意目录执行我常用的脚本文件
- python学习笔记——控制流(if,while,for,break,continue,模拟登录小程序实例)
- SUSELinux安装weblogic-db2-IBM
- java最长公共字串
- heroku command
- transform-origin学习笔记之旋转与基点的关系
- 18位身份证号码校验
- int const 与 const int区别 以及指针相关