博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode24-Swap Nodes in Pairs
阅读量:6690 次
发布时间:2019-06-25

本文共 2009 字,大约阅读时间需要 6 分钟。

  hot3.png

Description

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

Mind Path

Note1: Using only constant extra space means that we can't use recusive solutions. Note2: Not modifying the values means that we can only swap nodes to do the swap.

Solution

package com.dylan.leetcode;import java.util.List;import org.junit.Assert;import org.junit.Test;/** * Created by liufengquan on 2018/8/11. */public class SwapNodesInPairs {    public ListNode swapPairs(ListNode head) {        if (head == null || head.next == null) {            return head;        }        ListNode newHead = new ListNode(0);        ListNode temp = newHead;        temp.next = head;        while (head != null && head.next != null) {            temp.next = head.next;            ListNode next = head.next.next;            temp.next.next = head;            head = next;            temp = temp.next.next;            temp.next = head;        }        return newHead.next;    }    @Test    public void testSwapSwapPairs() {        ListNode listNode = init(1);        Assert.assertEquals(listNode, swapPairs(listNode));        ListNode second = init(2);        ListNode swapped = swapPairs(second);        Assert.assertEquals(1, swapped.val);        Assert.assertEquals(0, swapped.next.val);        ListNode third = init(3);        ListNode thirdSwap = swapPairs(third);        Assert.assertEquals(1, thirdSwap.val);        Assert.assertEquals(0, thirdSwap.next.val);        Assert.assertEquals(2, thirdSwap.next.next.val);    }    public ListNode init(int n) {        ListNode head = new ListNode(1);        ListNode temp = head;        for (int i = 0; i < n; i++) {            temp.next = new ListNode(i);            temp = temp.next;        }        return head.next;    }}

转载于:https://my.oschina.net/liufq/blog/1926332

你可能感兴趣的文章
java设计模式-建造者模式
查看>>
oracle笔记
查看>>
ContentProvider数据更新
查看>>
一些常用RPM Repository(RPM软件仓库)地址
查看>>
Xcode常用插件
查看>>
实体 map 属性
查看>>
php设计模式--适配器模式
查看>>
java中的枚举类 enum使用与分析
查看>>
JAVA 四大域对象总结
查看>>
GIT 常用命令
查看>>
企业级落地容器与DevOps,选用K8S都有哪些“姿势”
查看>>
Android平台播放语音时支持听筒、喇叭之间切换
查看>>
RPC的实现
查看>>
不一样的Office 365之 —— 使用StaffHub管理你的排班
查看>>
从Mysql EXPLAIN探寻数据库查询优化2
查看>>
让元素居中
查看>>
php memcache保存session的一个设置误区
查看>>
鱼眼镜头
查看>>
Scalatra
查看>>
CentOS 7 三者分离编译安装LAMP
查看>>