您当前的位置: 首页 >  liyatjj leetcode

LeetCode重排链表

liyatjj 发布时间:2022-09-22 17:16:02 ,浏览量:3

剑指 Offer II 026. 重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为:

L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为:

L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → …

不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

在这里插入图片描述

输入: head = [1,2,3,4] 输出: [1,4,2,3]

来源:LeetCode

由于链表的下标不具有利用下标进行索引的功能,所以先将节点的值放入一个线性表里面,然后再构建一个新的链表。

需要注意的点: 1.需要两个指针,一个指向就是从0开始,另外一个指向list中的最后一个元素。 2.链表构建完毕的条件:i和j相等时 3.每次进行链表节点的构建时,进行i++或者j–,移动指针寻找下一个节点的值。 4.当构建完毕之后,链表结尾的指针应该指向null。

class Solution {
    public void reorderList(ListNode head) {
        List list = new ArrayList();
        ListNode node = head;
        while(node!=null){
            list.add(node);
            node=node.next;
        }
        int i=0,j=list.size()-1;
        while(i            
关注
打赏
1688896170
查看更多评论
0.2990s