Day1 92. 反转链表 II
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
题目:
说明:
1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
先发结果和代码:
class Solution {
ListNode x = null;
public ListNode reverseBetween(ListNode head, int m, int n) {
if(n - 1 == 0){
x = head.next;
return head;
}
ListNode cur = reverseBetween(head.next, m - 1, n - 1);
//在翻转范围内
if(m - 1 <= 0 && n - 1 >= 0){
head.next.next = head;
}
if(m == 1){//翻转的开始点
head.next = x;
}else{//反转点前的点
head.next = cur;
}
if(m - 1 <= 0 && n - 1 >= 0){
return cur;
}
return head;
}
}
思路:改进了翻转整条链表的做法。主要是处理翻转起始点m,和m - 1节点,中的head.next。
主要是要把1连接到4,然后2连接到5。2-4和翻转链表没有区别。
.
.
.
.
第一天写算法博客,主要是为了督促自己每天做一题算法题,希望可以坚持下去。