18-哈希表/第 4 章第 8 节《使用树结构》(1题)


4-8使用树结构(1题)

[TOC]

(难,常考)例题1:LeetCode 第 220 题

![image-20191123213851025](/Users/liwei/Library/Application Support/typora-user-images/image-20191123213851025.png)

题目要求:存在重复元素 III。给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。

题目难度:中等。

中文网址:https://leetcode-cn.com/problems/contains-duplicate-iii/description/

英文网址:https://leetcode.com/problems/contains-duplicate-iii/

求解关键:此时使用的查找表应该支持排序操作,特别是支持 ceil 和 floor 操作。

思路1:使用 TreeSet。

[5,2,8,7,12]

数的差的绝对值是 t,索引的差的绝对值是 k。

假设 k = 3,t=2。考虑 0、1。

5,2,8 => 3,6 t=2,不存在。

2,8,7 => 1

这道题要画一个线段图来求解一下。

![image-20191123213928625](/Users/liwei/Library/Application Support/typora-user-images/image-20191123213928625.png)

这是这个问题第 1 版的解法:在逻辑上不存在什么问题了。

![image-20191123213948169](/Users/liwei/Library/Application Support/typora-user-images/image-20191123213948169.png)

提交以后有一个陷阱。

所以有整形溢出。

![image-20191123214001377](/Users/liwei/Library/Application Support/typora-user-images/image-20191123214001377.png)

思路2:使用桶排序。

我的解答:https://gist.github.com/liweiwei1419/a047eceb6c30525d420d940cf668665b

参考资料:

思考总结:

要注意下面这个问题。

![image-20191123214034815](/Users/liwei/Library/Application Support/typora-user-images/image-20191123214034815.png)

![image-20191123214051803](/Users/liwei/Library/Application Support/typora-user-images/image-20191123214051803.png)


文章作者: liweiwei1419
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 liweiwei1419 !
评论
 上一篇
09-queue/6-4 队列 Queue(4题) 09-queue/6-4 队列 Queue(4题)
6-4 队列 Queue(4题)例题1:LeetCode 第 102 题(常规题)题目要求:102 题和 107 题都要求完成二叉树的层序遍历。 给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。 题目难度:中
2019-11-24 liweiwei1419
下一篇 
18-哈希表/第 4 章第 7 节《查找表和滑动窗口 Contains Duplicate》(2题) 18-哈希表/第 4 章第 7 节《查找表和滑动窗口 Contains Duplicate》(2题)
4-7 查找表和滑动窗口 Contains Duplicate(2题)[TOC] 例题1:LeetCode 第 219 题(判断存在重复元素的索引之差小于某个数)题目要求:存在重复元素 II。给定一个整数数组和一个整数 k,判断数组中是否存
2019-11-23 liweiwei1419
  目录