• Swap Nodes in Pairs LeetCode Java


    描述

    Given a linked list, swap every two adjacent nodes and return its head.
    For example, Given 1->2->3->4, you should return the list as 2->1->4->3.
    Your algorithm should use only constant space. You may not modify the values in the list, only nodes
    itself can be changed.

    分析

    给定一个链表,交换每两个相邻节点并返回其头。
    例如,给定1 ->2 ->3>4,您应该返回列表为2 ->1>4>3。

    代码

     1 public static ListNode swapPairs(ListNode head) {
     2         if (head == null || head.next == null)
     3             return null;
     4         ListNode fakehead = new ListNode(-1);
     5         fakehead.next = head;
     6         ListNode ptr1 = fakehead.next, ptr2 = fakehead.next.next, newstart = fakehead;
     7 
     8         while (ptr2 != null && ptr2.next != null) {
     9             ptr1.next = ptr2.next;
    10             ptr2.next = newstart.next;
    11             newstart.next = ptr2;
    12             ptr2.next = ptr1;
    13             newstart = newstart.next.next;
    14             ptr1 = newstart.next;
    15             ptr2 = newstart.next.next; // 最后一轮执行不到,因为判空了
    16 
    17         }
    18         if (ptr2.next == null) { // 如果是偶数,则再交换一次。 如果是奇数就不交换了。
    19             ptr1.next = ptr2.next;
    20             ptr2.next = newstart.next;
    21             newstart.next = ptr2;
    22             ptr2.next = ptr1;
    23         }
    24         return fakehead.next;
    25     }
  • 相关阅读:
    C#生成MD5的方法
    平常心是道
    Android 三种动画的使用 – Tween Animation
    17个Javascript日期选择器
    Javascript解码编码常用函数
    mysql 命令行导入导出数据
    技术驱动还是产品驱动
    Ubuntu 和 Redhat / Fedora 服务管理命令对比表
    jquery常用技巧
    Fedora 17安装JDK1.7
  • 原文地址:https://www.cnblogs.com/ncznx/p/9160668.html
Copyright © 2020-2023  润新知