Leetcode92. 反转链表 II(JAVA头插法)
Posted !0 !
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode92. 反转链表 II(JAVA头插法)相关的知识,希望对你有一定的参考价值。
题目链接:https://leetcode-cn.com/problems/reverse-linked-list-ii/
解题思路
我们如果想反转一个链表,就要先找到要反转的点的前面一个节点,然后再使用头插法反转链表。最好拿纸画一下图。
代码
class Solution {
public ListNode reverseBetween(ListNode head, int left, int right) {
ListNode newNode = new ListNode(-1, head); //加新头节点
ListNode l = newNode;
for (int i = 1; i < left; i++) //找到要反转的点的前一个节点
l = l.next;
ListNode cur = l.next; //要反转的点
ListNode next;
for (int i = 0; i < right - left; i++) { //循环次数
next = cur.next;
cur.next = next.next;
next.next = l.next;
l.next = next;
}
return newNode.next;
}
}
复杂度分析
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
以上是关于Leetcode92. 反转链表 II(JAVA头插法)的主要内容,如果未能解决你的问题,请参考以下文章