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

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

原题链接在这里:

题目:

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. 

题解:

需要建一个dunmy,最后return dunmy.next. 如此可以避免边界问题的讨论,例如头两个点的转换。

Time Complexity: O(n), n是list的长度. Space: O(1).

AC Java:

1 /** 2  * Definition for singly-linked list. 3  * public class ListNode { 4  *     int val; 5  *     ListNode next; 6  *     ListNode(int x) { val = x; } 7  * } 8  */ 9 public class Solution {10     public ListNode swapPairs(ListNode head) {11         if(head == null || head.next == null){12             return head;13         }14         15         ListNode dummy = new ListNode(0);16         dummy.next = head;17         18         ListNode mark = dummy;19         ListNode A;20         ListNode B;21         while(mark.next != null && mark.next.next != null){22             A = mark.next;23             B = mark.next.next;24             A.next = B.next;25             B.next = A;26             mark.next = B;27             mark = mark.next.next;28         }29         return dummy.next;30     }31 }

Recursion解法.

Time Complexity: O(n). Space: O(n), stack space.

AC Java: 

1 /** 2  * Definition for singly-linked list. 3  * public class ListNode { 4  *     int val; 5  *     ListNode next; 6  *     ListNode(int x) { val = x; } 7  * } 8  */ 9 public class Solution {10     public ListNode swapPairs(ListNode head) {11         if(head == null || head.next == null){12             return head;13         }14         ListNode n = head.next;15         head.next = swapPairs(n.next);16         n.next = head;17         return n;18     }19 }

跟上.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/4825008.html

你可能感兴趣的文章
QT文件读写
查看>>
C语言小项目-火车票订票系统
查看>>
15.210控制台故障分析(解决问题的思路)
查看>>
BS调用本地应用程序的步骤
查看>>
常用到的多种锁(随时可能修改)
查看>>
用UL标签+CSS实现的柱状图
查看>>
mfc Edit控件属性
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
优秀员工一定要升职吗
查看>>
[LintCode] 462 Total Occurrence of Target
查看>>
springboot---redis缓存的使用
查看>>
架构图-模型
查看>>
sql常见面试题
查看>>
jQuery总结第一天
查看>>
Java -- Swing 组件使用
查看>>
Software--Architecture--DesignPattern IoC, Factory Method, Source Locator
查看>>
poj1936---subsequence(判断子串)
查看>>
黑马程序员_Java基础枚举类型
查看>>
[ python ] 练习作业 - 2
查看>>