🐭
NeetCodeをGo言語で挑戦~Duplicate Integer
NeetCode とは?
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 つあります。
- 線形探索
- ハッシュマップ
線形代数の場合は、順番に処理を行うため、処理時間が 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