[LeetCode][Java] Reverse Linked List II
来源:互联网 发布:管家婆软件打不开 编辑:程序博客网 时间:2024/05/20 07:14
题目:
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL
, m = 2 and n = 4,
return 1->4->3->2->5->NULL
.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
题意:
将一个链表中从位置m到位置n的部分进行转置.在原链表中完成转置并仅仅通过一次遍历。
比如:
给定1->2->3->4->5->NULL ,m=2 and n=4,
返回1->4->3->2->5->NULL
.
注意:
m 和 n 满足以下条件
1 ≤ m ≤ n ≤ length of list.
算法分析:
参考http://blog.csdn.net/linhuanmars/article/details/24613781
* 分为两个步骤,第一步是找到m结点所在位置,第二步就是进行反转直到n结点。
* 反转的方法就是每读到一个结点,把它插入到m结点前面位置,然后m结点接到读到结点的下一个。
* 总共只需要一次扫描,所以时间是O(n),只需要几个辅助指针,空间是O(1)。代码如下:
AC代码:
<span style="font-family:Microsoft YaHei;font-size:12px;">public class Solution { public ListNode reverseBetween(ListNode head, int m, int n) { if(head == null) return null; ListNode dummy = new ListNode(0); dummy.next = head; ListNode preNode = dummy; int i=1; while(preNode.next!=null && i<m) { preNode = preNode.next; i++; } //if(i<m) // return head; ListNode mNode = preNode.next; ListNode cur = mNode.next; while(cur!=null && i<n) { ListNode next = cur.next; cur.next = preNode.next; preNode.next = cur; mNode.next = next; cur = next; i++; } return dummy.next; }}</span>
0 0
- [Leetcode] Reverse Linked List II (Java)
- leetcode JAVA Reverse Linked List II 3.32
- 【Leetcode】Reverse Linked List II in JAVA
- [LeetCode][Java] Reverse Linked List II
- leetcode oj java Reverse Linked List II
- [LeetCode] 92. Reverse Linked List II java
- Reverse Linked List II leetcode java
- LeetCode[Linked List]: Reverse Linked List II
- LeetCode: Reverse Linked List II
- LeetCode: Reverse Linked List II
- [LeetCode] Reverse Linked List II
- [Leetcode] Reverse Linked List II
- [LeetCode]Reverse Linked List II
- Leetcode: Reverse Linked List II
- [Leetcode]Reverse Linked List II
- [leetcode]Reverse Linked List II
- LeetCode-Reverse Linked List II
- LeetCode Reverse Linked List II
- error: stray ‘\302’ in program; error: stray ‘\240’ in program 问题解决办法
- JS中常用函数(一)启动运行函数addLoadEvent
- Freemodbus文档1:模块
- 跟我一起写 Makefile(四)
- Android Studio ADB not responding. If you'd like to retry, then please manually kill "adb.exe" and c
- [LeetCode][Java] Reverse Linked List II
- #1032 : 最长回文子串
- PuTTY SSH 使用证书免密码登录
- PuTTY + Xming 远程使用 Linux GUI
- Log4j配置文件的详解
- 让应用停留在后台模式的三种方式
- 解决:C8051系列单片机,代码量较大时工作不正常问题
- 机器视觉检测中为什么要进行像素校准
- 现在就开始使用AngularJS的三个重要原因