LeetCode92之Reverse Linked ListII的 Java题解
2015-05-05 18:06
411 查看
题目:
Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given
return
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
解题:
需要反转m到n个点,按照前面的思路,我们需要记录第m-1个节点,从m+1个节点到第n个节点依次插入到m-1个节点之后,当m为头节点时,这时候就不存在第m-1个节点,因此我们构造一个fakeNode节点使它的下一个节点就是头节点。
代码:
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个点,按照前面的思路,我们需要记录第m-1个节点,从m+1个节点到第n个节点依次插入到m-1个节点之后,当m为头节点时,这时候就不存在第m-1个节点,因此我们构造一个fakeNode节点使它的下一个节点就是头节点。
代码:
<strong> </strong>public static ListNode reverseBetween(ListNode head, int m, int n) { if(head==null||head.next==null||m==n)//链表只有0或1个节点或是只要求反转一个节点,直接返回原表头 return head; ListNode fakeNode=new ListNode(-1);//头节点之前的一个点 fakeNode.next=head;//它的下一个节点就是头结点 ListNode cur=head;//记录遍历的当前节点 ListNode pre=fakeNode;//用来记录当前节点的前一个节点 int countNum=1;//用来记录链表的第几个几点 while(countNum<=m-1) { cur=cur.next; pre=pre.next; countNum++; } ListNode mNode=cur;//记录第m个节点 cur=cur.next;//cur指向第m+1个点 countNum=m+1;//countNum此时记录到第m+1个节点 ListNode next=null;//保存下一个需要遍历的节点 while(countNum<=n) { next=cur.next;//保存下一个需要遍历的节点 cur.next=pre.next; pre.next=cur; cur=next; countNum++; } mNode.next=next;//节点m指向节点n+1; return fakeNode.next; }需要注意的一点就是要记录第m个节点,并在反转完成之后,将它指向n+1个节点
相关文章推荐
- LeetCode-92-Reverse Linked List II 链表反转 各种边界条件
- leetcode || 92、Reverse Linked List II
- [LeetCode92]Reverse Linked List II
- leetcode 92: Reverse Linked List II
- leetcode92~Reverse Linked List II
- LeetCode(92) Reverse Linked List II
- [leetcode-92]Reverse Linked List II(c++)
- Reverse Linked List II - LeetCode 92
- LeetCode92——Reverse Linked List II
- leetcode_92_Reverse Linked List II
- [leetcode 92] Reverse Linked List II
- LeetCode92 Reverse Linked List II
- 【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】
- leetcode-Reverse Linked List II-92
- Reverse Linked List II Leetcode92
- leetcode:92. Reverse Linked List II(Java)解答
- Java for LeetCode 092 Reverse Linked List II
- [C语言][LeetCode][92]Reverse Linked List II
- LeetCode92 Reverse Linked List II
- leetcode JAVA Reverse Linked List II 3.32