[Leetcode] 25. Reverse Nodes in k-Group
7581 ワード
Problem
質問リンク
各kノードの順序が逆転する問題
Solutionの最初のノードを指す空のpreHeadノード(headを指す)が生成される. の最初のノードから、ノードを移動してk個のノードを反転させ、各ノードをアレイに配置する. このとき最後のノードが指すノードを覚えておいてください. 配列を反転した後、各ノードの指向を反転させる. 開始ノードはステアリングノードを示し、反転された最後のノードは、以前に保存された最後のノードが示すノードを示す. を反転し、kのように配列を入れることができない場合は、実行を停止します. JS Code
質問リンク
各kノードの順序が逆転する問題
Solution
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @param {number} k
* @return {ListNode}
*/
var reverseKGroup = function(head, k) {
const preHead = new ListNode(0,head)
let rear = preHead
const reverseNode = (node) => {
let mvNode = node
let start = new ListNode()
let end = null
let pointer = start
let arr = []
for(let i = 0 ; i < k ; i++) {
if (!mvNode) return node
if (i === k-1) end = mvNode.next
arr.push({...mvNode})
mvNode = mvNode.next
}
arr.reverse().forEach(item => {
if(!start.next) start.next = item
pointer.next = item
pointer = pointer.next
})
pointer.next = end
return start.next
}
while(rear) {
const temp = reverseNode(rear.next)
// console.log(temp)
if (!preHead.next) preHead.next = temp
rear.next = temp
for(let i = 0 ; i < k ; i++) {
if (!rear) break
rear = rear.next
}
}
return preHead.next
};
質問するReference
この問題について([Leetcode] 25. Reverse Nodes in k-Group), 我々は、より多くの情報をここで見つけました https://velog.io/@253eosam/Leetcode-25.-Reverse-Nodes-in-k-Groupテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol