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

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

1 Given a linked list, swap every two adjacent nodes and return its head.2 3 For example,4 Given 1->2->3->4, you should return the list as 2->1->4->3.5 6 Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

这道题属于链表操作的题目,思路比较清晰,就是每次跳两个节点,后一个接到前面,前一个接到后一个的后面,最后现在的后一个(也就是原来的前一个)接到下下个结点(如果没有则接到下一个)。坑爹地多次过,全都是写程序时不注意的小问题,书写习惯还需要进一步改善。遇到的bug有:忘记return语句;定义ListNode runner = head.next,却将判断head==null的情况放在这句之后; 忘记了新的head将不会是原来的那个head,而是head.next;

所以以后遇到runner.next.next的情况要先确保runner.next != null; 遇到runner.next的情况要先确保runner != null

1 /** 2  * Definition for singly-linked list. 3  * public class ListNode { 4  *     int val; 5  *     ListNode next; 6  *     ListNode(int x) { 7  *         val = x; 8  *         next = null; 9  *     }10  * }11  */12 public class Solution {13     public ListNode swapPairs(ListNode head) {14         // Start typing your Java solution below15         // DO NOT write main() function16         ListNode dummy = new ListNode(0);17         dummy.next = head;18         ListNode curr = dummy;19         ListNode node1 = null;20         ListNode node2 = null;21         22         while(curr.next!=null && curr.next.next!=null){23             node1 = curr.next;            24             node2 = node1.next;25             ListNode next =node2.next;            26             curr.next = node2;27             node2.next = node1;28             node1.next = next;            29             curr=node1;30         }31         return dummy.next;32     }33 }

 这道题中用了一个辅助指针作为表头,这是链表中比较常用的小技巧,因为这样可以避免处理head的边界情况,一般来说要求的结果表头会有变化的会经常用这个技巧

转载地址:http://sguqa.baihongyu.com/

你可能感兴趣的文章
微服务接口设计规范和统一异常处理策略
查看>>
Koa与Node.js开发实战(3)——Nunjucks模板在Koa中的应用(视频演示)
查看>>
自研服务治理框架----服务端/客户端配置
查看>>
JDBC Item3: LOB(Large objects)
查看>>
win864位使用plsqldeveloper连接oracle数据库的问题
查看>>
js回调函数
查看>>
Android Fragment 真正的完全解析(下)
查看>>
无线路由器说说2.4G和5G Wi-Fi的区别
查看>>
超赞的jQuery图片滑块动画特效代码汇总
查看>>
分享一下我的代码
查看>>
(一)线程管理_5---等待线程终止
查看>>
go try-catch
查看>>
xutils
查看>>
我的友情链接
查看>>
tomcat+myeclipse的项目热部署
查看>>
51CTO学院优惠版
查看>>
xcode实用快捷键
查看>>
我的友情链接
查看>>
根据数据结果集,自定义展示highchart图
查看>>
暗黑世界 网络游戏从0开始搭建
查看>>