zoukankan      html  css  js  c++  java
  • 220. 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 difference between nums[i] and nums[j] is at most t and the difference between i and j is at most k.

    维护一个windon

    treeset:

    ceiling(E e)

    Returns the least element in this set greater than or equal to the given element, or null if there is no such element.
     
    floor(E e)
    Returns the greatest element in this set less than or equal to the given element, or null if there is no such element.
     
    remove(Object o)
    Removes the specified element from this set if it is present.
     
    public class Solution {
        public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
            if(nums.length < 2 || t < 0) return false;
            TreeSet<Integer> set = new TreeSet<Integer>();
            for(int i = 0 ; i < nums.length; i++){
                Integer floor = set.floor(nums[i] + t);
                Integer ceil = set.ceiling(nums[i] - t);
                if(floor != null && floor >= nums[i] || ceil != null && ceil <= nums[i])
                    return true;
                set.add(nums[i]);
                if(i >= k) set.remove(nums[i-k]);
            }
            return false;
        }
    }
  • 相关阅读:
    HelloWorld入门程序
    再写博客
    iOS--小结系列一
    iOS--ARC
    ios--block
    iOS--protocol
    iOS--内存管理
    指针基本概念
    ZooKeeper系列之十:ZooKeeper的一致性保证及Leader选举
    ZooKeeper系列之九:ZooKeeper API简介及编程
  • 原文地址:https://www.cnblogs.com/joannacode/p/6132588.html
Copyright © 2011-2022 走看看