リンクリスト・サイクル
4956 ワード
リンクリストは
関数への引数はリンクリストの値です.
配列の助けを借りてノードを格納します.
上または上に到達する歓迎以上の感じ!
head
, and nodes
と.value
と.next
プロパティ.次のプロパティは、次のノードに接続されています.next
プロパティ.// a linked list object with a head and node children
const linkedList = { head: {
next: {
val: 1,
next: {
val: 2,
next: null
}
}
}
}
このleetcode問題はリンクされたリストのノードのいずれかがリストの前のノードに接続しているかどうかを調べます.関数への引数はリンクリストの値です.
[1,2,3,4]
そして、例えば、サイクルが存在する位置1
これはリンクリストが最終ノードの後の位置インデックス1のノードに戻ることを意味する.- 1を通過するとサイクルがない.
const hasCycle = (head) => {
let seen = []
while(head !== null){
if(seen.includes(head)){ // use includes method of array equivalent of contains to hashset in java
return true
}else{
seen.push(head)
}
head = head.next
}
return false
};
このソリューションでは、リンクリストを横断している間、以前のノードに戻るかどうかを確認します.配列の助けを借りてノードを格納します.
let seen = []
//...
// and when visiting them
//...
seen.push(head)
我々は、単にリンクされたリストとリセット頭を横切るためにwhileループを使いますhead.next
ループの最後に.これにより、次の反復処理の次のノードを訪問できます.while(head !== null){
//...
// condition checks
//...
head = head.next
}
その後、.includes
arrayメソッドを使用して、現在のノードを既に参照しているかどうかを確認しますseen
配列.if(seen.includes(head)){
return true
}else{
seen.push(head)
}
最後に、もし見つけたらhead
は既にseen
返される配列true
返り値false
そうでなければデフォルトで.上または上に到達する歓迎以上の感じ!
Reference
この問題について(リンクリスト・サイクル), 我々は、より多くの情報をここで見つけました https://dev.to/santispavajeau/linked-list-cycle-beginner-friendly-olgテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol