zoukankan      html  css  js  c++  java
  • 链表元素按奇偶聚集

    leetcode地址:

    https://leetcode.com/problems/odd-even-linked-list/description/

    描述:

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.

    You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.

    Example 1:

    Input: 1->2->3->4->5->NULL
    Output: 1->3->5->2->4->NULL
    

    Example 2:

    Input: 2->1->3->5->6->4->7->NULL
    Output: 2->3->6->7->1->5->4->NULL
    

    Note:

    • The relative order inside both the even and odd groups should remain as it was in the input.
    • The first node is considered odd, the second node even and so on ...

    分析:

    这题感觉没什么难度,唯一有点难度的地方在于你最好不要创建新的节点,而仅仅是改变节点之间的连接关系,即只通过改变节点的next指针来重建链表顺序,这样才能达到空间复杂度为O(1)的要求。这题有两种,一种要求按照元素的下标的奇偶性进行排序,另一种按照节点的val值的奇偶性进行重排,区别不大,无非是对奇偶性的判断略有区别。

    我这里仍然使用了虚拟头结点来减小代码实现的复杂性。

    代码:

    public boolean isPalindrome(ListNode head) {
    if (null == head) {
    return true;
    }
    // 切分链表
    ListNode fast = head, slow = head;
    while (fast.next != null && fast.next.next != null) {
    slow = slow.next;
    fast = fast.next.next;
    }
    ListNode right = slow.next;
    slow.next = null;
    right = reverse(right);
    while (right != null && head != null) {
    if (right.val != head.val) {
    return false;
    }
    right = right.next;
    head = head.next;
    }
    return true;
    }

    public ListNode reverse(ListNode list) {
    ListNode newHead = null;
    while (list != null) {
    ListNode next=list.next;
    list.next = newHead;
    newHead = list;
    list = next;
    }
    return newHead;
    }
  • 相关阅读:
    天正暖通2013版安装包附带注册机下载
    你妈安好
    利用FLASH和XML做炫酷图片相册
    空调冷凝水管径选用原则
    知足常乐
    曾经的真三国无双
    Deep Exploration安装破解汉化
    Revit模型文件输出为3D PDF格式的方法
    Adobe Acrobat 9 Pro Extended简体中文版安装破解汉化教程
    Keep reading
  • 原文地址:https://www.cnblogs.com/zhuge134/p/10927311.html
Copyright © 2011-2022 走看看