• LeetCode:奇偶链表【328】


    LeetCode:奇偶链表【328】

    题目描述

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

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

    示例 1:

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

    示例 2:

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

    说明:

    • 应当保持奇数节点和偶数节点的相对顺序。
    • 链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。

    题目分析

      我的想法是这样的,将原链表拆分成奇偶链表然后在合并

      这样的话涉及几个步骤:

      1.两个链表的初始节点,如STEP0所示。

      2.odd跳到even的下一个,even再跳到odd的下一个,然后将even串到evenHead上,如此往复(请看STEP1、STEP2)。

      3.最后,将odd的下一个串到evenHead,实现链接。

      

    Java题解

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode oddEvenList(ListNode head) {
            if(head==null)
                return null;
            ListNode oddList=head;
            ListNode evenList=head.next;
            ListNode evenHead = evenList;
            while(evenList!=null&&evenList.next!=null)
            {
                oddList.next=evenList.next;
                oddList=oddList.next;
                evenList.next=oddList.next;
                evenList=evenList.next;
            }
            oddList.next=evenHead;
            return head;
        }
    }
  • 相关阅读:
    cf Round 633
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    Django学习手册
    ERROR CL .exe……错误
    DLL、lib等链接库文件的使用
    HTTP协议
  • 原文地址:https://www.cnblogs.com/MrSaver/p/9485657.html
Copyright © 2020-2023  润新知