题目描述:

方法一:二叉搜索树+滑动窗口

方法二:桶排序 O(N)

class Solution:
def containsNearbyAlmostDuplicate(self, nums: List[int], k: int, t: int) -> bool:
from collections import OrderedDict
n = len(nums)
if n <= 1 or k < 1 or t < 0: return False
queue = OrderedDict()
for n in nums:
key = n if not t else n // t
for m in [queue.get(key-1), queue.get(key), queue.get(key+1)]:
if m is not None and abs(n - m) <= t:
return True
if len(queue) == k:
queue.popitem(False)
queue[key] = n
return False

另:

def containsNearbyAlmostDuplicate(self, nums, k, t):
if t < 0: return False
n = len(nums)
d = {}
w = t + 1
for i in range(n):
m = nums[i] // w
if m in d:
return True
if m - 1 in d and abs(nums[i] - d[m - 1]) < w:
return True
if m + 1 in d and abs(nums[i] - d[m + 1]) < w:
return True
d[m] = nums[i]
if i >= k: del d[nums[i - k] // w]
return False

最新文章

  1. Package Configurations的使用示例
  2. WSDL项目---处理消息
  3. ReLu(Rectified Linear Units)激活函数
  4. 【BZOJ】3224: Tyvj 1728 普通平衡树(某不科学的oj)
  5. php后台如何避免用户直接进入方法实例
  6. 李洪强iOS开发之-环信02_iOS SDK 介绍及导入
  7. 洛谷 P1316 丢瓶盖
  8. Java中4种权限的理解
  9. Xamarin C# Android for Visual Studio 平台安装
  10. Echarts自适应浏览器大小
  11. Linked List Cycle &amp;&amp; Linked List Cycle II
  12. 打开eclipse &quot;Initializing Java Tooling&quot;错误
  13. easyui获取正在编辑行的代码
  14. RabbitMQ 生产消息并放入队列
  15. Spark之UDAF
  16. mysql 数据可视化操作---Navicat安装及简单使用
  17. Lodop打印设计(PRINT_DESIGN)介绍
  18. interface 界面&amp;接口
  19. Python中对文件和目录的操作
  20. 20155326 2006-2007-2 《Java程序设计》第4周学习总结

热门文章

  1. Array.prototype.slice.call()等几种将arguments对象转换成数组对象的方法
  2. [BOI2009]Radio Transmission 无线传输
  3. Jmeter+ant
  4. 伪类checked
  5. 修改css样式+jq中的效果+属性操作+元素操作
  6. 关于第一次将STM32与电脑连接情况
  7. metasploit5配置数据库
  8. 使用JMeter进行http压力测试
  9. C/C++通用Makefile
  10. 解决vi显示文件不能全屏的问题