LeetCode Java刷题笔记—328. 奇偶链表

Posted 刘Java

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Java刷题笔记—328. 奇偶链表相关的知识,希望对你有一定的参考价值。

328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。

中等难度。首先将链表进行拆分,同时保存一个当前节点的前驱节点的引用pre,并且使用一个flag标识位,来表示最后的节点是属于奇链表还是偶链表。

如果flag为false,表示最后的节点属于偶链表,那么就用前驱节点pre链接偶链表的头节点;如果flag为true,表示最后的节点属于奇链表,那么就用最后的节点head链接偶链表的头节点。

public ListNode oddEvenList( ListNode head )

   if( head == null || head.next == null )
      return head;
   
   //odd,奇链表头部节点;even,偶链表头部节点;pre,前驱节点
   ListNode odd = head, even = head.next, pre = null;
   //flag表示最后的节点是属于奇链表还是偶链表
   boolean flag = true;
   while( head.next != null )
      flag = !flag;
      ListNode next = head.next;
      head.next = next.next;
      pre = head;
      head = next;
   
   //如果flag为false,表示最后的节点属于偶链表,那么就用前驱节点pre链接偶链表的头节点
   //如果flag为true,表示最后的节点属于奇链表,那么就用最后的节点head链接偶链表的头节点
   if( !flag )
      pre.next = even;
   
   else
      head.next = even;
   
   //返回奇链表的头节点
   return odd;

以上是关于LeetCode Java刷题笔记—328. 奇偶链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode - 328 - 奇偶链表 - java - 一种思维,两种解法

刷题16:奇偶链表

LeetCode 328. 奇偶链表

leetcode中等328奇偶链表

leetcode中等328奇偶链表

leetcode中等328奇偶链表