leetcode-220-存在重复元素③*
2024-09-06 07:07:24
题目描述:
方法一:二叉搜索树+滑动窗口
方法二:桶排序 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
最新文章
- Package Configurations的使用示例
- WSDL项目---处理消息
- ReLu(Rectified Linear Units)激活函数
- 【BZOJ】3224: Tyvj 1728 普通平衡树(某不科学的oj)
- php后台如何避免用户直接进入方法实例
- 李洪强iOS开发之-环信02_iOS SDK 介绍及导入
- 洛谷 P1316 丢瓶盖
- Java中4种权限的理解
- Xamarin C# Android for Visual Studio 平台安装
- Echarts自适应浏览器大小
- Linked List Cycle &;&; Linked List Cycle II
- 打开eclipse ";Initializing Java Tooling";错误
- easyui获取正在编辑行的代码
- RabbitMQ 生产消息并放入队列
- Spark之UDAF
- mysql 数据可视化操作---Navicat安装及简单使用
- Lodop打印设计(PRINT_DESIGN)介绍
- interface 界面&;接口
- Python中对文件和目录的操作
- 20155326 2006-2007-2 《Java程序设计》第4周学习总结