Reverse Linked List II leetcode java

题目

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 ≤ mn ≤ length of list.

题解

经典的题目就是链表逆序啦,一般的链表逆序是让把链表从前到后都逆序,这个是给定了起始位置和结束位置,方法是一样的。

就是维护3个指针,startpoint,node1和node2。

startpoint永远指向需要开始reverse的点的前一个位置。

node1指向正序中第一个需要rever的node,node2指向正序中第二个需要reverse的node。

交换后,node1 在后,node2在前。这样整个链表就逆序好了。

代码如下:

1     public ListNode reverseBetween(ListNode head, int m, int n) {
 2         ListNode newhead = new ListNode(-1);
 3         newhead.next = head;
 4         
 5         if(head==null||head.next==null)
 6             return newhead.next;
 7             
 8         ListNode startpoint = newhead;//startpoint指向需要开始reverse的前一个
 9         ListNode node1 = null;//需要reverse到后面去的节点
10         ListNode node2 = null;//需要reverse到前面去的节点
11         
12         for (int i = 0; i < n; i++) {
13             if (i < m-1){
14                 startpoint = startpoint.next;//找真正的startpoint
15             } else if (i == m-1) {//开始第一轮
16                 node1 = startpoint.next;
17                 node2 = node1.next;
18             }else {
19                 node1.next = node2.next;//node1交换到node2的后面
20                 node2.next = startpoint.next;//node2交换到最开始
21                 startpoint.next = node2;//node2作为新的点
22                 node2 = node1.next;//node2回归到node1的下一个,继续遍历
23             }
24         }
25         return newhead.next;
26     }

Reverse Linked List II leetcode java,布布扣,bubuko.com

时间: 2024-08-05 19:34:57

Reverse Linked List II leetcode java的相关文章

Reverse Linked List II——LeetCode

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 ≤ lengt

Reverse Linked List II leetcode

本题与之前单链表逆置不同的是,加入了范围判断. 依然沿用之前单链表逆置的方法,只需要再做好起始节点和末尾节点的判断 说起来容易,做起来复杂,特别是单链表,很容易把人搞晕,所以,在编程之前最后画图理清思路. 这次在头结点的处理上,不同于以往设置临时头结点的方法,使用了二级指针,这种方法写出来的代码可能比较少,但是不容易理解,对于追求效率的同学未尝不可一试 ListNode* reverseBetween(ListNode* head, int m, int n) { if (head == nul

leetcode——Reverse Linked List II 选择链表中部分节点逆序(AC)

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 ≤ le

Leetcode:Reverse Linked List II 反转链表区间

Reverse Linked List II 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

leetcode - Reverse Linked List II

leetcode - Reverse Linked List II 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 fol

LeetCode OJ - Reverse Linked List II

题目: 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 ≤ l

[LeetCode][JavaScript]Reverse Linked List II

Reverse Linked List II 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 cond

【LeetCode】Reverse Linked List II

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 ≤ lengt

(每日算法)LeetCode --- Reverse Linked List II(旋转链表的指定部分)

Reverse Linked List II(旋转链表的指定部分) Leetcode 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 sati