Leetcode Note: Go - Set Mismatch

Set Mismatch - LeetCode
https://leetcode.com/problems/set-mismatch/

  • Go 言語で取り組んだメモ

所感

  • int 配列 nums で 2つ の値を求めて int 配列で return する
    1. 2回 繰り返している数
    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 までループする必要がある
  • 記録した値を int 配列にして return