Skip to content

Commit 78d30c6

Browse files
author
arbent
committed
2018/9/23
1 parent c34f34f commit 78d30c6

File tree

4 files changed

+118
-0
lines changed

4 files changed

+118
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/* 217. 存在重复元素
2+
题目描述提示帮助提交记录社区讨论阅读解答
3+
给定一个整数数组,判断是否存在重复元素。
4+
5+
如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。
6+
7+
示例 1:
8+
9+
输入: [1,2,3,1]
10+
输出: true
11+
示例 2:
12+
13+
输入: [1,2,3,4]
14+
输出: false
15+
示例 3:
16+
17+
输入: [1,1,1,3,3,4,3,2,4,2]
18+
输出: true
19+
您是否在真实的面试环节中遇到过这道题目呢?
20+
题目难度:简单
21+
通过次数:22.5K
22+
提交次数:54.8K
23+
贡献者:LeetCode
24+
相关话题
25+
26+
相似题目
27+
存在重复元素 II存在重复元素 III
28+
*/
29+
func containsDuplicate(nums []int) bool {
30+
m := make(map[int]bool)
31+
for _, v := range nums {
32+
exist, _ := m[v]
33+
if exist {
34+
return true
35+
}
36+
m[v] = true
37+
}
38+
return false
39+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/* 219. 存在重复元素 II
2+
给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k。
3+
4+
示例 1:
5+
6+
输入: nums = [1,2,3,1], k = 3
7+
输出: true
8+
示例 2:
9+
10+
输入: nums = [1,0,1,1], k = 1
11+
输出: true
12+
示例 3:
13+
14+
输入: nums = [1,2,3,1,2,3], k = 2
15+
输出: false */
16+
func containsNearbyDuplicate(nums []int, k int) bool {
17+
for i := 1; i <= k; i++ {
18+
for j := 0; j+i < len(nums); j++ {
19+
if nums[j] == nums[j+i] {
20+
return true
21+
}
22+
}
23+
}
24+
return false
25+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/* 220. 存在重复元素 III
2+
给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。
3+
4+
示例 1:
5+
6+
输入: nums = [1,2,3,1], k = 3, t = 0
7+
输出: true
8+
示例 2:
9+
10+
输入: nums = [1,0,1,1], k = 1, t = 2
11+
输出: true
12+
示例 3:
13+
14+
输入: nums = [1,5,9,1,5,9], k = 2, t = 3
15+
输出: false */
16+
func containsNearbyAlmostDuplicate(nums []int, k int, t int) bool {
17+
for i := 1; i <= k; i++ {
18+
for j := 0; j+i < len(nums); j++ {
19+
if nums[j]-nums[j+i] <= t && nums[j]-nums[j+i] >= -t {
20+
return true
21+
}
22+
}
23+
}
24+
return false
25+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/* 771. 宝石与石头
2+
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
3+
4+
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
5+
6+
示例 1:
7+
8+
输入: J = "aA", S = "aAAbbbb"
9+
输出: 3
10+
示例 2:
11+
12+
输入: J = "z", S = "ZZ"
13+
输出: 0
14+
注意:
15+
16+
S 和 J 最多含有50个字母。
17+
J 中的字符不重复。 */
18+
func numJewelsInStones(J string, S string) int {
19+
count := 0
20+
for _, v := range S {
21+
for _, p := range J {
22+
if v == p {
23+
count++
24+
break
25+
}
26+
}
27+
}
28+
return count
29+
}

0 commit comments

Comments
 (0)