要求

  • 给出整型数组nums和整数k,是否存在索引i和j
  • 使得nums[i]和nums[j]之差不超过t,且i和j之差不超过k

思路

  • 建立k个元素的有序查找表
  • 每次有新元素加入,寻找查找表中大于 nums[i]-t 的最小值,若存在且此值小于 nums[i]+t,则目标元素存在
  • set底层是二叉树实现,时间(nlogn),空间(k)
  • vector中的int值相加可能产生整型溢出,set中使用64位整数 long long

实现

 1 class Solution {
2 public:
3 bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
4 if(t < 0)
5 return false;
6
7 set<long long> record;
8 for(int i = 0 ; i < nums.size() ; i ++){
9
10 if(record.lower_bound((long long)nums[i] - (long long)t) != record.end() &&
11 *record.lower_bound((long long)nums[i] - (long long)t ) <= (long long)nums[i] + (long long)t)
12 return true;
13
14 record.insert(nums[i]);
15
16 if(record.size() == k + 1)
17 record.erase( nums[i-k] );
18 }
19
20 return false;
21 }
22 };

最新文章

  1. Eclipse导入MyEclipse创建的web项目报错的解决方法
  2. Unity3D项目开发一点经验
  3. SQL 关于apply的两种形式cross apply 和 outer apply
  4. cvReleaseImage 释放内存出错
  5. UEditor 之查询当前编辑区域的状态是源码模式还是可视化模式
  6. 记一次基于Unity的Profiler性能分析
  7. 利用zip(或者phar)协议进行本地文件包含
  8. 设置datagridview中button按钮的背景颜色
  9. JAVA-POI实现EXCEL的读写
  10. Dev之ChartControl控件(一)
  11. .net core中引用webservice,并忽略https证书验证
  12. Hyperledger Fabric 1.0 从零开始(七)——启动Fabric多节点集群
  13. MySQL 常用语句总结
  14. arcgis api 3.x for js 入门开发系列七图层控制(附源码下载)
  15. PhoenixFD插件流体模拟——UI布局【Simulation】详解
  16. Div不用float布局
  17. laravel中连表查询
  18. 安卓备份 To Do(待办事项)的数据库
  19. C语言 &#183; 字符串输入输出函数
  20. html 和 javascript 的相关执行顺序

热门文章

  1. 分享15个实用VSCode插件,快来收藏吧!
  2. 第26 章 : 理解 CNI 和 CNI 插件
  3. java面试-synchronized与lock有什么区别?
  4. 使用 shell 做 tcp 协议模拟
  5. 快速了解 JavaScript ES2019 的五个新增特性
  6. 201871030109-韩诚 实验一 软件工程准备—Blog
  7. Dynamics CRM制作报表的时候让用户可以用自己的权限浏览数据
  8. OO第一单元总结与反思
  9. C语言-内存函数的实现(一)之memcpy
  10. C++ 面向对象高级设计