Leetcode Note: Go - Set Mismatch
Set Mismatch - LeetCode
https://leetcode.com/problems/set-mismatch/
- Go 言語で取り組んだメモ
所感
- int 配列 nums で 2つ の値を求めて int 配列で return する
- 2回 繰り返している数
- 欠落している数
回答
Set Mismatch - LeetCode
https://leetcode.com/problems/set-mismatch/solution/
func findErrorNums(nums []int) []int {
m := map[int]int{}
dup := -1
missing := 1
for i := 0; i < len(nums); i++ {
m[nums[i]] += 1
}
for i := 1; i <= len(nums); i++ {
if _, ok := m[i]; ok {
if m[i] == 2 {
dup = i
}
} else {
missing = i
}
}
return []int{dup, missing}
}
- hash map を使って登場回数をカウント
- その後 map の値をチェックして 2回 登場しているものと、 0回 登場しているものを記録
- 2回目 の for では
[1, 1]
入力パターンを考慮して i を 1 からスタートして nums 配列の length までループする必要がある
- 2回目 の for では
- 記録した値を int 配列にして return