码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode220. 存在重复元素 III

时间:2020-12-18 12:10:35      阅读:4      评论:0      收藏:0      [点我收藏+]

标签:最大的   lazy   duplicate   重复   return   treeset   空间复杂度   rgb   dup   

技术图片

 

class Solution {
    public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
        /**
         *  本题与219题仅在判断部分有改动
         *  时间复杂度O(nlogn)  空间复杂度O(k)
         */
        TreeSet<Long> set = new TreeSet<>();
        for (int i = 0; i < nums.length; i++) {
            // 需要寻找的元素是在 v-t 和 v+t 之间
            // TreeSet中ceiling(E e)方法返回的是set中大于等于e的元素中最小的元素,
            // floor(E e)方法返回的是set 中小于等于 e 的元素中最大的元素
            // 这两个方法如果没找到返回null. 两个方法复杂度都为 O(logn)
            if (set.ceiling((long)nums[i] - t) != null &&
                    set.ceiling((long)nums[i] - t) <= (long)nums[i] + t) {
                return true;
            }
            /*
            if (set.floor((long)nums[i] + t) != null &&
                    set.floor((long)nums[i] + t) >= (long)nums[i] - t) {
                return true;
            }
            */
            set.add((long)nums[i]);
            if (set.size() == k + 1) {
                set.remove((long)nums[i - k]);
            }
        }
        return false;
    }
}

 

LeetCode220. 存在重复元素 III

标签:最大的   lazy   duplicate   重复   return   treeset   空间复杂度   rgb   dup   

原文地址:https://www.cnblogs.com/HuangYJ/p/14117583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!