zoukankan      html  css  js  c++  java
  • LeetCode 328 奇偶链表

    LeetCode 328 奇偶链表

    问题描述:
      给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
      请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。

    执行用时:1 ms, 在所有 Java 提交中击败了7.79%的用户
    内存消耗:38.5 MB, 在所有 Java 提交中击败了55.33%的用户

    分离出奇、偶节点组建奇、偶链表

    class Solution {
        public ListNode oddEvenList(ListNode head) {
            if(head==null || head.next==null) {
                return head;
            }
            //双指针一遍扫描: p1指向奇数头节点、p2指向偶数头节点
            ListNode oddHead = head, evenHead = head.next, tmp = evenHead.next;
            oddHead.next = null;
            evenHead.next = null;
            ListNode oddTail = oddHead;
            ListNode evenTail = evenHead;
            int n = 1;
            while(tmp!=null) {
                //奇数节点
                if(n%2==1) {
                    oddTail.next = tmp;
                    oddTail = oddTail.next;
                }
                //偶数节点
                else {
                    evenTail.next = tmp;
                    evenTail = evenTail.next;
                }
                tmp = tmp.next;
                oddTail.next = null;
                evenTail.next = null;
                n++;
            }
            oddTail.next = evenHead;
            return oddHead;
        }
    }
    
  • 相关阅读:
    n的阶乘
    只出现一次的数字
    2的幂次方
    海康摄像头调用程序
    对象和Map转化gongju
    base64和图片的相互转换
    三员管理的定义
    关于注解的理解
    vue开发环境和生产环境里面解决跨域的几种方法
    thymeleaf 入门
  • 原文地址:https://www.cnblogs.com/CodeSPA/p/13677731.html
Copyright © 2011-2022 走看看