• Swap Nodes in Pairs


    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 public class Solution {
     2     public ListNode swapPairs(ListNode head) {
     3         // Note: The Solution object is instantiated only once and is reused by each test case.
     4         if(head == null || head.next == null) return head;
     5         ListNode newhead = head.next;
     6         ListNode first = head;
     7         ListNode second = head;
     8         ListNode pos = head;
     9         while(pos != null && pos.next != null){
    10             first = pos;
    11             second = pos.next;
    12             pos = second.next;
    13             if(pos == null || pos.next == null)
    14                 first.next = pos;
    15             else
    16                 first.next = pos.next;
    17             second.next = first;
    18         }
    19         return newhead;
    20     }
    21 }
     1  public class Solution {
     2     public ListNode swapPairs(ListNode head) {
     3         // Start typing your Java solution below
     4         // DO NOT write main() function
     5         ListNode helper = new ListNode(0);
     6         helper.next = head;
     7         ListNode n1 = helper, n2=head;
     8         
     9         while(n2!=null && n2.next!=null){
    10             ListNode temp = n2.next.next;
    11             n2.next.next=n1.next;
    12             n1.next=n2.next;
    13             n2.next=temp;
    14             n1=n2;
    15             n2=n1.next;
    16         }
    17         
    18         return helper.next;
    19     }
    20 }

     第二遍:

     1 public class Solution {
     2     public ListNode swapPairs(ListNode head) {
     3         // Note: The Solution object is instantiated only once and is reused by each test case.
     4         if(head == null || head.next == null) return head;
     5         ListNode header = new ListNode(-1), first = head, second = head.next, cur = header;
     6         header. next = head;
     7         while(second != null ){
     8             first.next = second.next;
     9             second.next = first;
    10             cur.next = second;
    11             cur = first;
    12             first = cur.next;
    13             if(first != null)
    14                 second = first.next;
    15             else
    16                 second = null;
    17         }
    18         return header.next;
    19     }
    20 }
  • 相关阅读:
    (十)安装YAML
    (十四)日志
    Android自动化测试------monkeyrunner(六)
    Android自动化测试------monkey日志管理(五)
    如何学好一门编程语言
    linux vi hjkl由来
    .net 微服务CICD 好文章
    APPCMD 精心整理 有点赞的吗
    APPCMD 命令合集
    APPCMD 使用手册
  • 原文地址:https://www.cnblogs.com/reynold-lei/p/3371390.html
Copyright © 2020-2023  润新知