Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2c5eec4

Browse files
Merge pull request SharingSource#319 from SharingSource/ac_oier
✨feat: Add 219
2 parents 48d735a + 665d24b commit 2c5eec4

File tree

3 files changed

+112
-0
lines changed

3 files changed

+112
-0
lines changed

‎Index/哈希表.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
| [149. 直线上最多的点数](https://leetcode-cn.com/problems/max-points-on-a-line/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/max-points-on-a-line/solution/gong-shui-san-xie-liang-chong-mei-ju-zhi-u44s/) | 困难 | 🤩🤩🤩 |
1212
| [166. 分数到小数](https://leetcode-cn.com/problems/fraction-to-recurring-decimal/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/fraction-to-recurring-decimal/solution/gong-shui-san-xie-mo-ni-shu-shi-ji-suan-kq8c4/) | 中等 | 🤩🤩🤩🤩 |
1313
| [187. 重复的DNA序列](https://leetcode-cn.com/problems/repeated-dna-sequences/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/repeated-dna-sequences/solution/gong-shui-san-xie-yi-ti-shuang-jie-hua-d-30pg/) | 中等 | 🤩🤩🤩🤩 |
14+
| [219. 存在重复元素 II](https://leetcode-cn.com/problems/contains-duplicate-ii/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/contains-duplicate-ii/solution/gong-shui-san-xie-hua-dong-chuang-kou-yu-q02i/) | 中等 | 🤩🤩🤩🤩 |
1415
| [229. 求众数 II](https://leetcode-cn.com/problems/majority-element-ii/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/majority-element-ii/solution/gong-shui-san-xie-noxiang-xin-ke-xue-xi-ws0rj/) | 中等 | 🤩🤩🤩🤩 |
1516
| [260. 只出现一次的数字 III](https://leetcode-cn.com/problems/single-number-iii/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/single-number-iii/solution/gong-shui-san-xie-yi-ti-shuang-jie-ha-xi-zgi4/) | 中等 | 🤩🤩🤩🤩 |
1617
| [268. 丢失的数字](https://leetcode-cn.com/problems/missing-number/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/missing-number/solution/gong-shui-san-xie-yi-ti-wu-jie-pai-xu-ji-te3s/) | 简单 | 🤩🤩🤩🤩 |

‎Index/滑动窗口.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
| [3. 无重复字符的最长子串 ](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/shua-chuan-lc-shuang-zhi-zhen-ha-xi-biao-q08m/) | 中等 | 🤩🤩🤩🤩🤩 |
44
| [30. 串联所有单词的子串](https://leetcode-cn.com/problems/substring-with-concatenation-of-all-words/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/substring-with-concatenation-of-all-words/solution/shua-chuan-lc-po-su-ha-xi-biao-jie-fa-hu-ml3x/) | 困难 | 🤩🤩 |
55
| [187. 重复的DNA序列](https://leetcode-cn.com/problems/repeated-dna-sequences/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/repeated-dna-sequences/solution/gong-shui-san-xie-yi-ti-shuang-jie-hua-d-30pg/) | 中等 | 🤩🤩🤩🤩 |
6+
| [219. 存在重复元素 II](https://leetcode-cn.com/problems/contains-duplicate-ii/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/contains-duplicate-ii/solution/gong-shui-san-xie-hua-dong-chuang-kou-yu-q02i/) | 中等 | 🤩🤩🤩🤩 |
67
| [220. 存在重复元素 III](https://leetcode-cn.com/problems/contains-duplicate-iii/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/contains-duplicate-iii/solution/gong-shui-san-xie-yi-ti-shuang-jie-hua-d-dlnv/) | 中等 | 🤩🤩🤩 |
78
| [424. 替换后的最长重复字符](https://leetcode-cn.com/problems/longest-repeating-character-replacement/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/longest-repeating-character-replacement/solution/ping-ping-wu-qi-shuang-zhi-zhen-da-bai-h-fgif/) | 中等 | 🤩🤩🤩🤩 |
89
| [438. 找到字符串中所有字母异位词](https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/) | [LeetCode 题解链接](https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/solution/gong-shui-san-xie-shuang-zhi-zhen-shi-xi-t5hc/) | 中等 | 🤩🤩🤩🤩 |
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
### 题目描述
2+
3+
这是 LeetCode 上的 **[219. 存在重复元素 II](https://leetcode-cn.com/problems/contains-duplicate-ii/solution/gong-shui-san-xie-hua-dong-chuang-kou-yu-q02i/)** ,难度为 **简单**
4+
5+
Tag : 「滑动窗口」、「哈希表」
6+
7+
8+
9+
给你一个整数数组 `nums` 和一个整数 `k` ,判断数组中是否存在两个 不同的索引 `i``j` ,满足 `nums[i] == nums[j]``abs(i - j) <= k` 。如果存在,返回 `true` ;否则,返回 `false`
10+
11+
示例 1:
12+
```
13+
输入:nums = [1,2,3,1], k = 3
14+
15+
输出:true
16+
```
17+
示例 2:
18+
```
19+
输入:nums = [1,0,1,1], k = 1
20+
21+
输出:true
22+
```
23+
示例 3:
24+
```
25+
输入:nums = [1,2,3,1,2,3], k = 2
26+
27+
输出:false
28+
```
29+
30+
提示:
31+
* 1ドル <= nums.length <= 10^5$
32+
* $-10^9 <= nums[i] <= 10^9$
33+
* 0ドル <= k <= 10^5$
34+
35+
---
36+
37+
### 滑动窗口 + 哈希表
38+
39+
整理题意:是否存在长度不超过的 $k + 1$ 窗口,窗口内有相同元素。
40+
41+
我们可以从前往后遍历 $nums,ドル同时使用 `Set` 记录遍历当前滑窗内出现过的元素。
42+
43+
假设当前遍历的元素为 $nums[i]$:
44+
45+
* 下标小于等于 $k$(起始滑窗长度还不足 $k + 1$):直接往滑窗加数,即将当前元素加入 `Set` 中;
46+
* 下标大于 $k$:将上一滑窗的左端点元素 $nums[i - k - 1]$ 移除,判断当前滑窗的右端点元素 $nums[i]$ 是否存在 `Set` 中,若存在,返回 `True`,否则将当前元素 $nums[i]$ 加入 `Set` 中。
47+
48+
重复上述过程,若整个 $nums$ 处理完后仍未找到,返回 `False`
49+
50+
**代码(感谢 [@Benhao](/u/himymben/) 同学提供的其他语言版本):**
51+
```Java
52+
class Solution {
53+
public boolean containsNearbyDuplicate(int[] nums, int k) {
54+
int n = nums.length;
55+
Set<Integer> set = new HashSet<>();
56+
for (int i = 0; i < n; i++) {
57+
if (i > k) set.remove(nums[i - k - 1]);
58+
if (set.contains(nums[i])) return true;
59+
set.add(nums[i]);
60+
}
61+
return false;
62+
}
63+
}
64+
```
65+
-
66+
```Python3
67+
class Solution:
68+
def containsNearbyDuplicate(self, nums: List[int], k: int) -> bool:
69+
n = len(nums)
70+
s = set()
71+
for i in range(n):
72+
if i > k:
73+
s.remove(nums[i - k - 1])
74+
if nums[i] in s:
75+
return True
76+
s.add(nums[i])
77+
return False
78+
````
79+
-
80+
```Go
81+
func containsNearbyDuplicate(nums []int, k int) bool {
82+
n := len(nums)
83+
set := map[int]bool{}
84+
for i := 0; i < n; i++ {
85+
if i > k {
86+
set[nums[i - k - 1]] = false
87+
}
88+
if set[nums[i]] {
89+
return true
90+
}
91+
set[nums[i]] = true
92+
}
93+
return false
94+
}
95+
```
96+
* 时间复杂度:$O(n)$
97+
* 空间复杂度:$O(k)$
98+
99+
---
100+
101+
### 最后
102+
103+
这是我们「刷穿 LeetCode」系列文章的第 `No.219` 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。
104+
105+
在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。
106+
107+
为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:https://github.com/SharingSource/LogicStack-LeetCode 。
108+
109+
在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。
110+

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /