LeetCode之旅(21)-Swap Nodes in Pairs

来源:互联网 发布:apache日志 json 编辑:程序博客网 时间:2024/06/07 01:01

题目:

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.

思路:

  • 首先是判断head和head.next为空的情况,直接返回head
  • 然后设置first和second两个变量,用来记录一前一后两个元素
  • 设置pre来记录上一次最后的元素。pre.next = second;
  • -

代码:

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */public class Solution {    public ListNode swapPairs(ListNode head) {        if(head == null||head.next == null){            return head;        }        ListNode first = head;        ListNode second = head.next;        ListNode pre = null;        ListNode swap = null;        if(second != null){            head = second;        }        while(first != null&&second != null){            swap = second.next;            second.next = first;            first.next = swap;            if(pre != null){                pre.next = second;            }            pre = first;            first = swap;            if(swap != null){                second = swap.next;            }        }        return head;    }}
0 0
原创粉丝点击