🐭

NeetCodeをGo言語で挑戦~Duplicate Integer

2024/07/24に公開

NeetCode とは?

NeetCodeサイトTOP

NeetCodeは、コーディング試験対策の教材して、外資 IT 界隈で有名なコンテンツの一つです。
コンテンツ内には、コーディング試験の準備用のロードマップが設定されています。
ロードマップ内の問題に取り組むことで、近年増えているコーディング試験の対策になります。
NeetCode の環境でトライできるのは、コーディング試験でファーストチョイスと言われる Python、Java、C++、C#、そして、JavaScript となります。

私は、仕事において、Go 言語を使用しています。
処理時間や処理量を考慮したコーディングスキルを身に付けたいと思い、最近取り組んでいます。
そこで、コーディング試験の問題を Go 言語で順番に取り組んでみたいと思います。

Duplicate Integer

Duplicate Integer は、nums という数字の配列が与えられています。
配列内に重複が存在すれば、True を戻します。もし、そうでなければ、False を戻します。

例えば、以下の場合は、true と返します。

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

以下の場合は、false と返します。

Input : nums = [1, 2, 3, 4, 5]
Output : false

アプローチ方法

この問題のアプローチは、2 つあります。

  1. 線形探索
  2. ハッシュマップ

線形代数の場合は、順番に処理を行うため、処理時間が O(n^2)となります。一方で、ハッシュマップの場合は、マップに存在するかどうかを確認するだけなので、O(n)となります。

ここでは、ハッシュマップにて、実装していくことにします。

実装サンプル

func chceckDuplicate(nums []int) bool {
    // ハッシュマップの初期化
    array := make(map[int]bool)
    // 反復処理
	for _, n := range nums {
        // 重複チェック
		if array[n] {
            return true
        }
        array[n] = true
	}
	return false
}

まとめ

今回は、easy レベルということもあり、loop 処理と if 文のみのシンプルな実装で済みました。
実際に、仮設出し、方針決めから実装までで、15 分程度で済みました。
*スキルある方は、もっと早いはず 💦

今後もアウトプットの練習も兼ねて、取り組んでいきたいと思います。

Discussion