• 328. 奇偶链表


    给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。

    请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。

    示例 1:

    输入: 1->2->3->4->5->NULL
    输出: 1->3->5->2->4->NULL

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/odd-even-linked-list

     1 public class OddEvenLinkedList {
     2     static class ListNode {
     3         int val;
     4         ListNode next;
     5         ListNode(int x) {
     6             val = x;
     7         }
     8     }
     9     public ListNode oddEvenList1(ListNode head) {
    10         ListNode cur = head.next;
    11         ListNode curOdd = head;
    12         while(cur != null && cur.next !=null) {
    13             ListNode odd = cur.next;  //新的奇数位结点
    14             ListNode next = cur.next.next;  //下一个被操作的偶数位结点
    15             ListNode even = curOdd.next;  //当前奇数位后的偶数结点
    16             cur.next = next;  //当前偶数位结点指向下一个被操作的偶数位结点
    17             curOdd.next = odd;  //当前奇数位结点指向新的奇数位结点
    18             odd.next = even;  //新奇数位结点指向当前奇数位后的偶数结点
    19             cur = next; //开始新的循环
    20             curOdd = odd;
    21         }
    22         return head;       
    23     }    
    24     public ListNode oddEvenList2(ListNode head) {
    25         if (head == null) {
    26             return head;
    27         }
    28         ListNode odd = head;
    29         ListNode even = head.next;
    30         ListNode evenHead = even;  //记录第一个偶数位结点
    31         while (even != null && even.next != null) {
    32             odd.next = odd.next.next;
    33             odd = odd.next;
    34             even.next = even.next.next;
    35             even = even.next;
    36         }
    37         odd.next = evenHead;  //奇数位结点最后一个结点指向记录的第一个偶数位结点,形成新的链表
    38         return head;
    39     }
    40 
    41 }
    无论有多困难,都坚强的抬头挺胸,人生是一场醒悟,不要昨天,不要明天,只要今天。不一样的你我,不一样的心态,不一样的人生,顺其自然吧
  • 相关阅读:
    00077_集合
    python、js、php区别---6、函数相关
    python、js、php区别---5、存储结构
    python、js、php区别---4、基本结构
    python、js、php区别---3、运算符
    python、js、php区别---2、数据类型
    python、js、php区别---1、基本区别
    python疑难问题---3、可变和不可变数据类型
    python疑难问题---2、字典排序
    python疑难问题---1、遍历列表的三种方式
  • 原文地址:https://www.cnblogs.com/xiyangchen/p/11061597.html
Copyright © 2020-2023  润新知