zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    对坐标点的离散化
    线段树-离散化处理点
    树状数组
    线段树
    dfs
    vector
    go 参数传递的是值还是引用 (转)
    go 数组指针 指针数组
    go 协程
    go 接口实现
  • 原文地址:https://www.cnblogs.com/ncznx/p/9160668.html
Copyright © 2011-2022 走看看