Codingsignalの最初の重複問題の解決
987 ワード
ここで質問のプロンプトがあります.
この問題を解決するためにオブジェクトデータ構造を利用します.便利になるオブジェクトのプロパティは、オブジェクトの唯一のユニークなキーを格納することができます.これにより、配列を通過するだけで、既に見たことを追跡できます.
配列を反復処理するには、forループを使用します.配列の各項目について、値が既にオブジェクトのキーであるかどうかをチェックします.それが我々のオブジェクトでないならば、我々はそのキーをつくります.それが我々のオブジェクトにすでにあるならば、我々は我々がすでに我々の配列の前にその数を見たということを知っています.その時点で、我々がしなければならないすべては、その数を返すことです!
それは本当にこの問題を解決するために簡単です.そして、我々は線形、O(N)、解決を得るためにオブジェクトを利用しました.
Given an array a that contains only numbers in the range from 1 to a.length, find the first duplicate number for which the second occurrence has the minimal index. If there are no such elements, return -1.
この問題を解決するためにオブジェクトデータ構造を利用します.便利になるオブジェクトのプロパティは、オブジェクトの唯一のユニークなキーを格納することができます.これにより、配列を通過するだけで、既に見たことを追跡できます.
const a = [2, 1, 3, 5, 3, 2]
function firstDuplicate(a) {
let obj = {}
for (let i = 0; i < a.length; i++) {
if (obj[a[i]]){
return a[i]
} else {
obj[a[i]] = 1;
}
}
return -1
}
firstDuplicate(a) // 3
そこで、ここで我々のコードを見て、我々はすぐに我々が我々のキーを保存するオブジェクトをつくります.配列を反復処理するには、forループを使用します.配列の各項目について、値が既にオブジェクトのキーであるかどうかをチェックします.それが我々のオブジェクトでないならば、我々はそのキーをつくります.それが我々のオブジェクトにすでにあるならば、我々は我々がすでに我々の配列の前にその数を見たということを知っています.その時点で、我々がしなければならないすべては、その数を返すことです!
それは本当にこの問題を解決するために簡単です.そして、我々は線形、O(N)、解決を得るためにオブジェクトを利用しました.
Reference
この問題について(Codingsignalの最初の重複問題の解決), 我々は、より多くの情報をここで見つけました https://dev.to/cisnerosa/solving-codingsignal-s-first-duplicate-problem-39fmテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol