(nodes)
| 33 | } |
| 34 | |
| 35 | function reverse(nodes) { |
| 36 | // 将nodes里的ListNode关系翻转 |
| 37 | if (!nodes.length) { |
| 38 | return null |
| 39 | } |
| 40 | |
| 41 | if (nodes.length === 1) { |
| 42 | return [nodes[0],null,null] |
| 43 | } |
| 44 | |
| 45 | // 新开始的节点应为最后一个节点的下一个 |
| 46 | let newStartNode = nodes[nodes.length - 1].next |
| 47 | // 最后一个节点是翻转前的第一个节点 |
| 48 | let lastNode = nodes[0] |
| 49 | |
| 50 | let rNodes = nodes.reverse() |
| 51 | // 翻转后的头节点是翻转后的最后一个节点。 |
| 52 | let first = rNodes[0] |
| 53 | let indexF = first |
| 54 | for (let i of rNodes.slice(1)) { |
| 55 | i.next = null |
| 56 | indexF.next = i |
| 57 | indexF = i |
| 58 | } |
| 59 | // 返回新的头 |
| 60 | // 和下次迭代应该开始新头,为原nodes[-1]的next |
| 61 | return [first, newStartNode, lastNode] |
| 62 | |
| 63 | } |
| 64 | |
| 65 | let first = getKNodes(head) |
| 66 |
no test coverage detected