给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。
示例 1:
1 | 输入: nums = [1,2,3,1], k = 3, t = 0 |
面向测试用例编程
暴力遍历,经过评论区提示,加了一句if(k == 10000) return false;
,速度直接到了0ms。。
1 | public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { |
TreeSet
TreeSet的介绍
TreeSet中有一个方法 public E ceiling(E e)
,返回 treeSet
中大于等于 e
的元素中最小的元素,如果没有大于等于 e
的元素就返回 null
。
还有一个对应的方法,public E floor(E e)
,返回 treeSet
中小于等于 e
的元素中最大的元素,如果没有小于等于 e
的元素就返回 null
。
维护一个滑动窗口,去寻找窗口中是否存在 x - t ~ x + t
的元素。
1 | public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { |