• 220. 存在重复元素 III


     

    思路
    难度中等

    给你一个整数数组 nums 和两个整数 k 和 t 。请你判断是否存在 两个不同下标 i 和 j,使得 abs(nums[i] - nums[j]) <= t ,同时又满足 abs(i - j) <= k 

    如果存在则返回 true,不存在返回 false

    示例 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
     
     
     
    暴力:
    class Solution {
    public:
        bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
            
            for(int i = 0; i < nums.size();i++) {            
                for (int j = i+1;j <= i+k;j++) {
                    if (j < nums.size() && abs(long(nums[i])-long(nums[j])) <=t ) {
                    return true;
                    }  
                }
            }
            return false;
        }
    };
     
     
     
     
     
     
    class Solution {
    public:
        bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
            set<long> st; 
            for(int i = 0; i < nums.size();i++) {
                auto lb = st.lower_bound(long(nums[i])-t);
                if (lb != st.end() && *lb <= (long)nums[i] + t) return true;
                st.insert(nums[i]);
                if (i-k>=0) {
                    st.erase(nums[i-k]);
                }            
            }
            return false;
        }
    };
  • 相关阅读:
    ubuntu
    ubuntu
    ubuntu14.04,安装Gnome 15.10 (桌面)
    ubuntu14.04,安装Gnome 15.10 (桌面)
    Ubuntu 14.04.3 LTS如何安装谷歌输入法
    Ubuntu 14.04.3 LTS如何安装谷歌输入法
    ubuntu 安装 删除 卸载 Deb 包文件
    失去爆破音规律
    单词发音规律
    英式音标和美式音标的差异
  • 原文地址:https://www.cnblogs.com/zle1992/p/16612044.html
Copyright © 2020-2023  润新知