LeetCode(219) Contains Duplicate II
题目
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.
分析
题目描述:给定一个整数序列,查找是否存在两个下标分别为i和j的元素值nums[i]=nums[j]且满足i于j的距离最大为k;
定义一个长度最大为k的滑动窗口,用一个unordered_set维护窗口内的数字判断是否出现重复,使用两个指针start和end标记滑动窗口的两端,初始都是0,然后end不断进行扩展,扫描元素判断是否出现重复元素,直到发现end−start>k, 就开始移动start,并且在set中移除对应的元素。如果以为扫描到数组末尾还没有发现重复元素,那就可以返回false。时间复杂度和空间复杂度都是O(N)。
AC代码
class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        if (nums.empty())
            return false;
        int sz = nums.size();
        //使用容器unordered_set 其查找性能为常量
        unordered_set<int> us;
        int start = 0, end = 0;
        for (int i = 0; i < sz; ++i)
        {
            if (us.count(nums[i]) == 0)
            {
                us.insert(nums[i]);
                ++end;
            }
            else{
                return true;
            }
            if (end - start > k)
            {
                us.erase(nums[start]);
                ++start;
            }
        }//for
        return false;
    }
};
LeetCode(219) Contains Duplicate II的更多相关文章
- LeetCode(220) Contains Duplicate III
		
题目 Given an array of integers, find out whether there are two distinct indices i and j in the array ...
 - LeetCode(113) Path Sum II
		
题目 Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given ...
 - LeetCode(90):子集 II
		
Medium! 题目描述: 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2] 输出: [ [2], [1 ...
 - LeetCode(137) Single Number II
		
题目 Given an array of integers, every element appears three times except for one. Find that single on ...
 - LeetCode(40) Combination Sum II
		
题目 Given a collection of candidate numbers (C) and a target number (T), find all unique combinations ...
 - LeetCode (45) Jump Game II
		
题目 Given an array of non-negative integers, you are initially positioned at the first index of the a ...
 - LeetCode(47):全排列 II
		
Medium! 题目描述: 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2], [1,2,1], [2,1,1] ] 解题思路: 这道 ...
 - LeetCode(217)Contains Duplicate
		
题目 Given an array of integers, find if the array contains any duplicates. Your function should retur ...
 - LeetCode(63)Unique Paths II
		
题目 Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. Ho ...
 
随机推荐
- Codeforces Round #377 (Div. 2)  被坑了
			
http://codeforces.com/contest/732/problem/B 题目要求任意两个连续的日子都要 >= k 那么如果a[1] + a[2] < k,就要把a[2]加上 ...
 - 微信小程序tabBar显示问题
			
在微信小程序的开发中,我遇到疑惑如下: 在app.json中定义了多个pages,一般微信小程序启动的时候,自动加载pages下的第一个页面, "pages": [ ...
 - oracle备份imp命令大全
			
oracle中imp命令详细解释 Oracle的导入有用程序(Import utility)同意从数据库提取数据,而且将数据写入操作系统文件.imp使用的基本格式:imp[username[/pass ...
 - Ionic开发-常用命令
			
$ionic start myApp [tabs | sidemenu | blank] $ionic platform add android $ionic build android $ion ...
 - ORACLE行转列通用过程(转)
			
1.使用视图 SQL code? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 create or r ...
 - Kendo UI 模板概述
			
Kendo UI 模板概述 Kendo UI 框架提供了一个易用,高性能的 JavaScript 模板引擎.通过模板可以创建一个 HTML 片段然后可以和 JavaScript 数据合并成最终的 HT ...
 - null、undefined和NaN的区别
			
未定义的值和定义未赋值的值是undefined: null是一种特殊的Object,可以给变量赋一个值null,来清除变量的值: NaN是一种特殊的number:
 - javaSe-线程2
			
package com.java.chap09.sec02; public class Thread3 implements Runnable{ private int baoZi=1; privat ...
 - 远程桌面连接(mstsc)无法断开的解决方案
			
某2008 r2有二个系统账户,同时允许两个tcp连接,但每个用户仅同时允许一人登录.不知何因,关闭远程桌面连接的窗口后,再次连接就瞬间提示无法被连接.查看了事件查看器,信息为被注销,这是因为设置了“ ...
 - OO作业第一单元总结
			
一.第一单元作业回顾  系列一作业分为三周进行,都是表达式求导,难度渐进.  第一次实现的是简单幂函数的求导,第二次加入了sin和cos两种三角函数,第三次实现了三角函数内的嵌套以及引入了表达式因 ...