博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
24. 两两交换链表中的节点
阅读量:7069 次
发布时间:2019-06-28

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

知乎ID: 码蹄疾 

码蹄疾,毕业于哈尔滨工业大学。 
小米广告第三代广告引擎的设计者、开发者; 
负责小米应用商店、日历、开屏广告业务线研发;
主导小米广告引擎多个模块重构; 
关注推荐、搜索、广告领域相关知识;

题目

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

说明:

你的算法只能使用常数的额外空间。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

分析

两两合并节点,头结点的两个节点合并后,剩下的又可以转化为两两合并的子问题,所以递归求解即可。

code

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public ListNode swapPairs(ListNode head) {        if (head == null || head.next == null) {            return head;        }        ListNode left = head;        ListNode right = head.next;        left.next = swapPairs(right.next);        right.next = left;        return right;    }}

 

  微信扫码关注公众号,获得第一手新鲜资料!

转载于:https://www.cnblogs.com/acceml/p/9313243.html

你可能感兴趣的文章
光纤连接器分类
查看>>
JAVA设计模式之组合模式
查看>>
RH135-1-auto-install
查看>>
nginx+tomcat7 DOCKER镜像的dockerfile
查看>>
关于笔记本电脑网卡出问题的简单解决
查看>>
IPV4与IPV6表示方法
查看>>
桌面支持--不懂不要乱动-尤其是别人的东西
查看>>
hadoop集群上运行自定义wordcount
查看>>
Linux条件测试
查看>>
解决java 无法使用,全局proxifier 代理工具
查看>>
图形图表设计软件Edraw Max更新至v9.0,新增10000+符号和模板丨限时8.5折
查看>>
MySQL数据表存储引擎类型及特性
查看>>
JS与正则表达式相关的方法总结
查看>>
MySQL的replace into语句
查看>>
jedisLock—redis分布式锁实现
查看>>
Java内存管理
查看>>
关于Java泛型深入理解小总结
查看>>
HTTP的三次握手与四次挥手
查看>>
HTTP 协议中GET和POST到底有哪些区别
查看>>
[Err] ORA-24344: success with compilation error
查看>>