jotting

ⓁⒸ ‧‧‧ 217. Contains Duplicate

217. Contains Duplicate

❀ Origin

Problem

Given an array of integers, find if the array contains any duplicates.
Your function should return true if any value appears at least twice in the array,
and it should return false if every element is distinct.

Example 1

1
2
Input: [1,2,3,1]
Output: true

Example 2

1
2
Input: [1,2,3,4]
Output: false

Example 3

1
2
Input: [1,1,1,3,3,4,3,2,4,2]
Output: true

❀ 翻譯

問題

給定一個整數陣列,找出陣列是否包含任何重複值。
如果在陣列裡有任何數字出現了至少兩次以上,你的 function 應該要回傳 true,
而如果每個元素都是有明顯差異的,則回傳 false 。


❀ Solution

Golang

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 解法一:建立 map 去作為 hash 表
// 依照其 key 去檢查是否該數曾出現過。
func containsDuplicate(nums []int) bool {
m := make(map[int]bool)
for _, v := range nums {
if _, ok := m[v]; ok {
return true
}
m[v] = true
}
return false
}

// 解法二:先 sort ,再和下一個位置判斷是否重複
func containsDuplicate2(nums []int) bool {
sort.Ints(nums)
for i := 0; i < len(nums)-1; i++ {
if nums[i] == nums[i+1] {
return true
}
}
return false
}

/**
* 兩個解法在 LeetCode 上 Runtime 都差不多,
* 但因為第一個方法有建立了 map ,
* 所以在 Memory 的使用上會高出只操作陣列的方法二。
** /