Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Miykael_xxm
leetcode
提交
e27423c7
L
leetcode
项目概览
Miykael_xxm
/
leetcode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
leetcode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
e27423c7
编写于
3月 08, 2021
作者:
L
lucifer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: $220
上级
6edd117a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
109 addition
and
4 deletion
+109
-4
README.md
README.md
+2
-1
SUMMARY.md
SUMMARY.md
+1
-0
problems/219.contains-duplicate-ii.md
problems/219.contains-duplicate-ii.md
+4
-3
problems/220.contains-duplicate-iii.md
problems/220.contains-duplicate-iii.md
+102
-0
未找到文件。
README.md
浏览文件 @
e27423c7
...
@@ -262,8 +262,9 @@ leetcode 题解,记录自己的 leetcode 解题之路。
...
@@ -262,8 +262,9 @@ leetcode 题解,记录自己的 leetcode 解题之路。
-
[
0209. 长度最小的子数组
](
./problems/209.minimum-size-subarray-sum.md
)
-
[
0209. 长度最小的子数组
](
./problems/209.minimum-size-subarray-sum.md
)
-
[
0211. 添加与搜索单词 \* 数据结构设计
](
./problems/211.add-and-search-word-data-structure-design.md
)
-
[
0211. 添加与搜索单词 \* 数据结构设计
](
./problems/211.add-and-search-word-data-structure-design.md
)
-
[
0215. 数组中的第 K 个最大元素
](
./problems/215.kth-largest-element-in-an-array.md
)
-
[
0215. 数组中的第 K 个最大元素
](
./problems/215.kth-largest-element-in-an-array.md
)
-
[
0220. 存在重复元素 III
](
./problems/220.contains-duplicate-iii.md
)
🆕
-
[
0221. 最大正方形
](
./problems/221.maximal-square.md
)
-
[
0221. 最大正方形
](
./problems/221.maximal-square.md
)
-
[
0227. 基本计算器 II
](
./problems/227.basic-calculator-ii.md
)
🆕
-
[
0227. 基本计算器 II
](
./problems/227.basic-calculator-ii.md
)
🆕
-
[
0229. 求众数 II
](
./problems/229.majority-element-ii.md
)
-
[
0229. 求众数 II
](
./problems/229.majority-element-ii.md
)
-
[
0230. 二叉搜索树中第 K 小的元素
](
./problems/230.kth-smallest-element-in-a-bst.md
)
-
[
0230. 二叉搜索树中第 K 小的元素
](
./problems/230.kth-smallest-element-in-a-bst.md
)
-
[
0236. 二叉树的最近公共祖先
](
./problems/236.lowest-common-ancestor-of-a-binary-tree.md
)
-
[
0236. 二叉树的最近公共祖先
](
./problems/236.lowest-common-ancestor-of-a-binary-tree.md
)
...
...
SUMMARY.md
浏览文件 @
e27423c7
...
@@ -152,6 +152,7 @@
...
@@ -152,6 +152,7 @@
-
[
0209. 长度最小的子数组
](
./problems/209.minimum-size-subarray-sum.md
)
-
[
0209. 长度最小的子数组
](
./problems/209.minimum-size-subarray-sum.md
)
-
[
0211. 添加与搜索单词 \* 数据结构设计
](
./problems/211.add-and-search-word-data-structure-design.md
)
-
[
0211. 添加与搜索单词 \* 数据结构设计
](
./problems/211.add-and-search-word-data-structure-design.md
)
-
[
0215. 数组中的第 K 个最大元素
](
./problems/215.kth-largest-element-in-an-array.md
)
-
[
0215. 数组中的第 K 个最大元素
](
./problems/215.kth-largest-element-in-an-array.md
)
-
[
0220. 存在重复元素 III
](
./problems/220.contains-duplicate-iii.md
)
🆕
-
[
0221. 最大正方形
](
./problems/221.maximal-square.md
)
-
[
0221. 最大正方形
](
./problems/221.maximal-square.md
)
-
[
0227. 基本计算器 II
](
./problems/227.basic-calculator-ii.md
)
🆕
-
[
0227. 基本计算器 II
](
./problems/227.basic-calculator-ii.md
)
🆕
-
[
0229. 求众数 II
](
./problems/229.majority-element-ii.md
)
-
[
0229. 求众数 II
](
./problems/229.majority-element-ii.md
)
...
...
problems/219.contains-duplicate-ii.md
浏览文件 @
e27423c7
...
@@ -37,8 +37,9 @@ https://leetcode-cn.com/problems/contains-duplicate-ii/
...
@@ -37,8 +37,9 @@ https://leetcode-cn.com/problems/contains-duplicate-ii/
## 思路
## 思路
由于题目没有对空间复杂度有求,用一个 hashmap 存储已经访问过的数字即可,
用一个 hashmap 存储已经访问过的数字,每次访问都查看 hashmap 中是否有这个元素,有的话拿出索引进行比对,是否满足条件(相隔不大于 k),如果满足返回 true 即可。
每次访问都会看 hashmap 中是否有这个元素,有的话拿出索引进行比对,是否满足条件(相隔不大于 k),如果满足返回 true 即可。
可以看出,这道题就是两数和的进阶版。大家可以将这两道题结合起来理解哦~
## 公司
## 公司
...
@@ -132,7 +133,7 @@ class Solution {
...
@@ -132,7 +133,7 @@ class Solution {
-
时间复杂度:$O(N)$
-
时间复杂度:$O(N)$
-
空间复杂度:$O(N)$
-
空间复杂度:$O(N)$
更多题解可以访问我的 LeetCode 题解仓库:https://github.com/azl397985856/leetcode 。 目前已经
37
K star 啦。
更多题解可以访问我的 LeetCode 题解仓库:https://github.com/azl397985856/leetcode 。 目前已经
40
K star 啦。
关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你识别套路,高效刷题。
关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你识别套路,高效刷题。
...
...
problems/220.contains-duplicate-iii.md
0 → 100644
浏览文件 @
e27423c7
## 题目地址(220. 存在重复元素 III)
https://leetcode-cn.com/problems/contains-duplicate-iii/
## 题目描述
```
在整数数组 nums 中,是否存在两个下标 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值小于等于 t ,且满足 i 和 j 的差的绝对值也小于等于 ķ 。
如果存在则返回 true,不存在返回 false。
示例 1:
输入: nums = [1,2,3,1], k = 3, t = 0
输出: true
示例 2:
输入: nums = [1,0,1,1], k = 1, t = 2
输出: true
示例 3:
输入: nums = [1,5,9,1,5,9], k = 2, t = 3
输出: false
```
## 前置知识
-
哈希表
## 公司
-
暂无
## 思路
这道题是
[
219. 存在重复元素 II
](
https://github.com/azl397985856/leetcode/blob/master/problems/219.contains-duplicate-ii.md
)
的进阶版。那道题的条件是
`nums[i] == nums[j]`
, 而这道题则更加宽泛,是
`nums [i] 和 nums [j] 的差的绝对值小于等于 t `
。
这里我们介绍一种分桶的思想,其基本思想和桶排序是类似的。
具体来说,我们可使用 t 个桶。将所有数除以 (t+1) 的结果
**作为编号都存到一个哈希表中**
,不难知道哈希表的大小为 t。如果两个数字的编号相同,那么意味着其绝对值差小于等于 t。
那么如果两个数字的编号不同,是否意味着其绝对值差大于 t 呢?也不一定,相邻编号也可能是绝对值差小于等于 t 。因此我们只需要检查以下三种情况即可。
1.
当前编号
2.
左边相邻的编号
3.
右边相邻的编号
另外由于题目限定是索引差小于等于 k,因此需要清除哈希表中过期的信息。
## 关键点
-
分桶排序思想的应用
## 代码
-
语言支持:Python3
Python3 Code:
```
python
class
Solution
:
def
containsNearbyAlmostDuplicate
(
self
,
nums
:
List
[
int
],
k
:
int
,
t
:
int
)
->
bool
:
bucket
=
dict
()
if
t
<
0
:
return
False
for
i
in
range
(
len
(
nums
)):
nth
=
nums
[
i
]
//
(
t
+
1
)
if
nth
in
bucket
:
return
True
if
nth
-
1
in
bucket
and
abs
(
nums
[
i
]
-
bucket
[
nth
-
1
])
<=
t
:
return
True
if
nth
+
1
in
bucket
and
abs
(
nums
[
i
]
-
bucket
[
nth
+
1
])
<=
t
:
return
True
bucket
[
nth
]
=
nums
[
i
]
# 如果数组有相同的数会有影响么?答案是不会,因为如果有相同的数,我们直接就会在前面返回 true 了。
if
i
>=
k
:
bucket
.
pop
(
nums
[
i
-
k
]
//
(
t
+
1
))
return
False
```
**复杂度分析**
令 n 为数组长度。
-
时间复杂度:$O(n)$
-
空间复杂度:由于过期的会被清除,因此哈希表大小不会大于 k,因此空间复杂度为 $O(min(n,k))$
> 此题解由 [力扣刷题插件](https://leetcode-pp.github.io/leetcode-cheat/?tab=solution-template) 自动生成。
力扣的小伙伴可以
[
关注我
](
https://leetcode-cn.com/u/fe-lucifer/
)
,这样就会第一时间收到我的动态啦~
以上就是本文的全部内容了。大家对此有何看法,欢迎给我留言,我有时间都会一一查看回答。更多算法套路可以访问我的 LeetCode 题解仓库:https://github.com/azl397985856/leetcode 。 目前已经 40K star 啦。大家也可以关注我的公众号《力扣加加》带你啃下算法这块硬骨头。
关注公众号力扣加加,努力用清晰直白的语言还原解题思路,并且有大量图解,手把手教你识别套路,高效刷题。
![](
https://tva1.sinaimg.cn/large/007S8ZIlly1gfcuzagjalj30p00dwabs.jpg
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录