【Leetcode】Reverse Linked List II (Swap)
来源:互联网 发布:淘宝哪家男装店好 编辑:程序博客网 时间:2024/06/05 08:23
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.
这道题需要把1-2-3-4-5-变成1-4-3-2-5
也就是把2-3-4 变成4-3-2
所以2-3-4的头和尾显得非常重要
我们把2之前的元素作为头,2作为尾,然后3,4一次插入头的后面就可实现这个功能了。
也是就1-2-3-4-5中1作为头,2作为尾,3插入1后面就变成1-3-2, 4插入1的后面就变成1-4-3-2了。
这道题firstFix(头)好找,就是需要逆转的第一个元素的前面元素。
while(firstFix.next!=null && count<m) { firstFix=firstFix.next; count++; } if(firstFix.next==null) return head;
然后就是依次插入了
采取5步法
1. 寻找插入元素: ListNode insert = lastFix.next;
2. 记录next元素: ListNode next = insert.next;
3. 把insert插到first的后面: insert.next=firstFix.next; firstFix.next=insert;
4. 连接断掉的部分(lastFix和next): lastFix=next;
5. 选定下一个插入元素并且count++: insert=next; count++;
下面是完整代码
public ListNode reverseBetween(ListNode head, int m, int n) {if (head == null)return head;ListNode helper = new ListNode(0);helper.next = head;ListNode firstFix = helper;int count = 1;while (firstFix.next != null && count < m) {firstFix = firstFix.next;count++;}ListNode lastFix = firstFix.next;while (lastFix != null && lastFix.next != null && count < n) {ListNode insert = lastFix.next;ListNode next = insert.next;insert.next = firstFix.next;firstFix.next = insert;lastFix.next = next;insert = next;count++;}return helper.next;}
0 0
- 【Leetcode】Reverse Linked List II (Swap)
- 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
- [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】Swap Nodes in Pairs (Swap)
- 现在的房价套高了
- 关于JTidy整洁网页一个常见问题
- libevent入门
- 几个哈佛回复哦各地推广地方都是
- 【Leetcode】Reverse Linked List II (Swap)
- 项目之用U3D用自带的编译器和VS2010的区别感受
- methodserver停止前有软件异常,查看详细信息
- 遇到问题:注入 status 属性时、死活进不去action 断点、怀疑是因为status 属性引起的、struts2本身的bug
- Java程序员的JavaScript学习笔记(11——jQuery-在“对象”层面扩展)
- ubuntu 64 运行android sdk 发生错误 "../android-sdks/build-tools/aapt 文件不存在"
- 【Leetcode】Single Number (Bit Manipulation)
- 【Leetcode】Single Number II (Bit Manipulation)
- JAVA 数组,链表,树的基本概念与优劣。