zoukankan      html  css  js  c++  java
  • [LeetCode] 328. Odd Even Linked List ☆☆☆(奇偶节点分别放一起)

    每天一算:Odd Even Linked List

    描述

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

    请尝试使用原地算法完成。你的算法的空间复杂度应为 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

    说明:

      • 应当保持奇数节点和偶数节点的相对顺序。

      • 链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。

    解析

    这道题给了我们一个链表,让我们分开奇偶节点,所有奇节点在前,偶节点在后。

    • 设定两个虚拟节点,dummyHead1用来保存奇节点,dummyHead2来保存偶节点;

    • 遍历整个原始链表,将奇节点放于dummyHead1中,其余的放置在dummyHead2

    • 遍历结束后,将dummyHead2插入到dummyHead1后面

    代码

    /**
     * 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 || head.next == null || head.next.next == null) {
                return head;
            }
    
            ListNode head1 = new ListNode(-1);// 奇数链表
            ListNode head2 = new ListNode(-1);// 偶数链表
            ListNode p = head;
            ListNode p1 = head1;
            ListNode p2 = head2;
            for (int i = 0; p != null; i++) {
                if ((i & 1) == 0) {
                    head1.next = p;
                    head1 = head1.next;
                } else {
                    head2.next = p;
                    head2 = head2.next;
                }
                p = p.next;
            }
            head2.next = null;//偶数链表最后置为null
    
            head1.next = p2.next;
    
            return p1.next;
        }
    }
  • 相关阅读:
    c/c++ 网络编程 getaddrinfo 函数
    c/c++ 网络编程 bind函数
    c/c++ socket API 调用后的错误判断 perror errno
    python基础-面向对象编程之反射
    彻底理解Future模式
    Java并发编程:Callable、Future和FutureTask
    java异步调用方法
    理解ThreadLocal
    ReentrantReadWriteLock读写锁
    java锁优化
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/11104411.html
Copyright © 2011-2022 走看看