leetcode: swap-nodes-in-pairs

题目描述

Given a linked list, swap every two adjacent nodes and return its head.

For example, Given1->2->3->4, you should return the list as2->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. 建议画图配合理解

代码如下:

    public ListNode swapPairs(ListNode head) {
        if(head == null || head.next == null) return head;

        ListNode dummy = new ListNode(-1);
        dummy.next = head;
        ListNode start = dummy;

        ListNode p = null;
        ListNode temp = null;

	
        while(start.next != null && start.next.next != null){
            p = start.next;
            temp =p.next;
            p.next = temp.next;
            temp.next = start.next;
            start.next = temp;
            start = p;
        }
        return dummy.next;
    }

转载于:https://my.oschina.net/happywe/blog/3084930

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值