判断是否存在相距 k 以内的相同值

bool containsNearbyDuplicate(vector<int>& nums, int k) {
    unordered_map<int, list<size_t>> numIndexListDic;
    for (size_t i = 0; i < nums.size(); ++i){
        auto loc = numIndexListDic.find(nums[i]);
        if (loc == numIndexListDic.end()){
            numIndexListDic[nums[i]] = list<size_t>{i};
        }
        else{
            auto nearbyDuplicateIt = find_if(loc->second.cbegin(), loc->second.cend(), [&](size_t index){return i - index <= k;});
            if (nearbyDuplicateIt != loc->second.cend()){
                return true;
            }
            loc->second.push_back(i);
        }
    }
    return false;
}
时间: 2024-10-13 11:31:26

判断是否存在相距 k 以内的相同值的相关文章

POJ 2828 poj 2828 Buy Tickets 【树状数组,已知前n项和为K,返回n值】

题目链接:http://poj.org/problem?id=2828 在一个队列中,一个人想要插队,告诉你每个新来的人会插在i个人后面,求出最后的队列. 如果我们用模拟的话,那么时间复杂度肯定是超了:想想,如果我们逆序,那么最后来的人的位置一定是固定的,这样的话,我们将问题转化成逆序扫描给出数据,插在i个人后面这个数据就变成了在这个人前面需要留出多少个空位.如此我们只需要用树状数组记录前n项总共有多少个空位,每扫描一个数据,就找出能使得他前面正好有i个空位. 这题用树状数组或者线段树都可以,今

第4章第1节练习题5 二叉树查找第k个结点的值

问题描述 求先序遍历序列中第k(0≤k≤二叉树中结点个数)个结点的值. 算法思想 求解先序遍历中第k个结点的值,设置一个全局变量cnt来记录已经访问过的结点序号,当k==cnt时,表示找到了满足条件的结点,打印输出.否则继续按照先序遍历的方式遍历整棵二叉树便可.实现过程参见算法描述1 经过上述的思想,并没有将我们所需要的结果返回回来,因此在上述算法的思想上再次进行修改.在递归函数中为了表示区分,当T==NULL时,返回#:当找到时,返回T->data.当cnt≠k时,则递归的在左子树中查找,若找

js/jquery获取当前页面URL地址并判断URL字符串中是否包含某个具体值

js/jquery获取当前页面URL地址并判断URL字符串中是否包含某个具体值本文介绍jquery/js获取当前页面url地址的方法,在jquery与js中获取当前页面url方法是一样的,因为jquery没有自己相关的函数,使用js 的windows方法来获取,相关方法如下: window.location.pathname //设置或获取对象指定的文件名或路径 window.location.href //设置或获取整个 URL 为字符串 window.location.port //设置或获

单向列表的倒数第k个结点的值 python实现

1 #初始化链表的结点 2 class Node(): 3 def __init__(self,item): 4 self.item = item 5 self.next = None 6 7 #传入头结点,获取整个链表的长度 8 def length(headNode): 9 if headNode == None: 10 return None 11 count = 0 12 currentNode =headNode 13 #尝试了一下带有环的链表,计算长度是否会死循环,确实如此,故加上了

Python3基础 dict 推导式 生成10以内+奇数的值为True 偶数为False的字典

? python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 conda : 4.5.11 type setting : Markdown ? code [email protected]:~$ source activate py37 (py37) [email protected]:~$ ipython Python 3.7.0 (default, Jun 28 2018, 13:15:42) Type 'copyright'

输入人民币/美元后自动判断,输出转换后相对应的值

1 ''' 2 作者:pasaulis 3 版本:v2.0 4 日期:2018.11.7 5 功能:输入人民币/美元后自动判断,输出转换后相对应的值 6 ''' 7 in_str_value=input('请输入人民币/美元金额(格式示例:100rmb/100usd)') 8 9 usd_vs_value=6.91 10 rmb_value='' 11 usd_value='' 12 if in_str_value[-3:]=='rmb': 13 rmb_value=eval(in_str_va

判断组合数C(N,K)的奇偶性

一.首先最直接的方法求组合数,判断,耗时太大. 二.C(N,K)=N!/(K!(N-K)!);假设N!中2因子个数为a,K!中2因子个数为b,(N-K)!中2因子个数为c,则只需求出a,b,c: N!中,因子为i个数为N/i+N/i^2......+N/i^k (其中,i^k<N,i^(k+1)>=N); 接下来若a>b+c,则组合数位奇数,a=b+c,组合数为偶数: 三.对于C(N,K),若N&K == K 则C(N,K)为奇数,否则为偶数.

判断素数和输出100以内的素数

判断素数 public class Au { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in = new Scanner(System.in); int n = in.nextInt(); int isprime = 1; for(int i=2; i<n; i++){ if(n%i == 0){ isprime = 0; break; } } if(isprime ==

C++单链表找倒数第k个节点(时间复杂度为o(n)哦,用相距k节点的2个指针进行操作)

//输入一个单向链表,输出该链表中倒数第k个结点.链表的倒数第0个结点为链表的尾指针. //我的思路是2个指针往后面找,你想啊,如果是一个指针,肯定需要遍历2次,第一个遍历总共节点数,第二次才遍历最终结果 //这样的做法明显是不够好的,时间复杂度变成了2n,但是如果我们用2个指针,他们之间的距离差k个节点,有一个节点到达NULL //时(尾部),另一个节点就是我们要求的节点可以返回得到结果. #include <iostream> using namespace std; template&l