Skip to content

Commit dc268b3

Browse files
committed
feat: commit solution 219
1 parent a690298 commit dc268b3

File tree

3 files changed

+102
-0
lines changed

3 files changed

+102
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# [219.存在重复元素 II](https://leetcode-cn.com/problems/contains-duplicate-ii/description/)
2+
3+
4+
### 题目描述
5+
6+
<div class="notranslate"><p>给定一个整数数组和一个整数&nbsp;<em>k</em>,判断数组中是否存在两个不同的索引<em>&nbsp;i</em>&nbsp;和<em>&nbsp;j</em>,使得&nbsp;<strong>nums [i] = nums [j]</strong>,并且 <em>i</em> 和 <em>j</em>&nbsp;的差的 <strong>绝对值</strong> 至多为 <em>k</em>。</p>
7+
8+
<p>&nbsp;</p>
9+
10+
<p><strong>示例&nbsp;1:</strong></p>
11+
12+
<pre><strong>输入:</strong> nums = [1,2,3,1], k<em> </em>= 3
13+
<strong>输出:</strong> true</pre>
14+
15+
<p><strong>示例 2:</strong></p>
16+
17+
<pre><strong>输入: </strong>nums = [1,0,1,1], k<em> </em>=<em> </em>1
18+
<strong>输出:</strong> true</pre>
19+
20+
<p><strong>示例 3:</strong></p>
21+
22+
<pre><strong>输入: </strong>nums = [1,2,3,1,2,3], k<em> </em>=<em> </em>2
23+
<strong>输出:</strong> false</pre>
24+
</div>
25+
26+
### 解题思路
27+
28+
1. 利用hash表来实现
29+
30+
### 代码实现
31+
32+
<!-- tabs:start -->
33+
34+
#### **Golang**
35+
```go
36+
func containsNearbyDuplicate(nums []int, k int) bool {
37+
var numMap = make(map[int]int, 0)
38+
for i, v := range nums {
39+
if ii, ok := numMap[v]; ok && (i-ii) <= k {
40+
return true
41+
}
42+
numMap[v] = i
43+
}
44+
return false
45+
}
46+
```
47+
48+
49+
<!-- tabs:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package leetcode
2+
3+
/*
4+
* @lc app=leetcode.cn id=219 lang=golang
5+
*
6+
* [219] 存在重复元素 II
7+
*/
8+
9+
// @lc code=start
10+
func containsNearbyDuplicate(nums []int, k int) bool {
11+
var numMap = make(map[int]int, 0)
12+
for i, v := range nums {
13+
if ii, ok := numMap[v]; ok && (i-ii) <= k {
14+
return true
15+
}
16+
numMap[v] = i
17+
}
18+
return false
19+
}
20+
21+
// @lc code=end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package leetcode
2+
3+
import (
4+
"testing"
5+
)
6+
7+
func TestPlusOne(t *testing.T) {
8+
var nums []int
9+
var ret bool
10+
var k int
11+
12+
nums = []int{1, 2, 3, 1}
13+
k = 3
14+
ret = true
15+
if ret != containsNearbyDuplicate(nums, k) {
16+
t.Fatalf("case fails: %v\n", ret)
17+
}
18+
19+
nums = []int{1, 0, 1, 1}
20+
k = 1
21+
ret = true
22+
if ret != containsNearbyDuplicate(nums, k) {
23+
t.Fatalf("case fails: %v\n", ret)
24+
}
25+
26+
nums = []int{1, 2, 3, 1, 2, 3}
27+
k = 2
28+
ret = false
29+
if ret != containsNearbyDuplicate(nums, k) {
30+
t.Fatalf("case fails: %v\n", ret)
31+
}
32+
}

0 commit comments

Comments
 (0)