博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017.9.12
阅读量:4664 次
发布时间:2019-06-09

本文共 1097 字,大约阅读时间需要 3 分钟。

 

219. Contains Duplicate II

在这里用了multimap bug出在前置++和->的优先级顺序,也就是正文注释处,一直没加小括号

时间复杂度为O(NlogN);

class Solution {

public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
// map<int, int> imap; 如果有三个或更多相同的数 此后只能跟仅插入的第一个数的下标比较
// for(int i = 0; i != nums.size(); ++i) 所以放弃这个思路 改用UNorder map
// if(imap.find(nums[i] == imap.end()))
// imap.insert(nums[i], i);
// else
multimap<int, int> imap;
for(int i = 0; i != nums.size(); ++i)
imap.insert({nums[i], i});
for(int i = 0; i != nums.size(); ++i) {
auto icount = imap.count(nums[i]);
auto iter = imap.find(nums[i]);
while(icount - 1) {
if(iter->second + k >= (++iter)->second)    //bug
return true;
--icount;
}
}
return false;
}
};

答案中用set的方法 更快内存更小 时间O(N)

class Solution {

public:
bool containsNearbyDuplicate(vector<int>& nums, int k)
{
unordered_set<int> s;
if (k <= 0) return false;
if (k >= nums.size()) k = nums.size() - 1;
for (int i = 0; i < nums.size(); i++)
{
if (i > k) s.erase(nums[i - k - 1]);
if (s.find(nums[i]) != s.end()) return true;
s.insert(nums[i]);
}
return false;
}
};

转载于:https://www.cnblogs.com/bloomingFlower/p/7510018.html

你可能感兴趣的文章
【转载】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
查看>>
DBA笔记oracle undo_retention参数可动态修改
查看>>
123我爱你
查看>>
HDU 4033 Regular Polygon(几何 + 二分)
查看>>
webgl example1
查看>>
通过游戏学python 3.6 第一季 第四章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释 可复制直接使用 娱乐 可封装 函数...
查看>>
Django基础内容整理
查看>>
DTcms网站伪静态逻辑
查看>>
网络类型判断
查看>>
黑客dos命令大全
查看>>
Java开发必用的工具包
查看>>
https soap链接示例
查看>>
八LWIP学习笔记之用户编程接口(NETCONN)
查看>>
Git Day02,工作区,暂存区,回退,删除文件
查看>>
Docker安装MariaDB
查看>>
如何给app客户端进行埋点?
查看>>
结对第二次—文献摘要热词统计及进阶需求
查看>>
JavaWeb---总结(十三)使用Session防止表单重复提交
查看>>
JSP介绍(2)--- 九大隐式对象
查看>>
[置顶] .net技术类面试、笔试题汇总3
查看>>