力扣92反转链表中指定长度的结点(中等)
Posted 小布丁value
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣92反转链表中指定长度的结点(中等)相关的知识,希望对你有一定的参考价值。
- 代码思路:
- 1.先找到要反转的位置,指针从left开始走,到right_left结束
- 2.巧妙解法:把要反转的结点一次从头部插入,利用三个指针改变指向即可
- 3,加一个空的头结点,可以方便很多。
- 复杂度分析:
时间复杂度:O(N)O(N),其中 NN 是链表总节点数。最多只遍历了链表一次,就完成了反转。
空间复杂度:O(1)O(1)。只使用到常数个变量。
package LeedCode;
public class Day0703 {
public ListNode reverseBetween(ListNode head ,int left,int right){
ListNode empty =new ListNode(-1);
empty.next=head;
ListNode pre=empty;
//pre走到要反转的第一个结点的前一个
for(int i=0;i<left-1;i++){
pre=pre.next;
}
ListNode cur =pre.next;
for(int i=0;i<right - left;i++){
ListNode s=cur.next;
cur.next=s.next;
s.next=pre.next;
pre.next=s;
}
return empty.next;
}
}
以上是关于力扣92反转链表中指定长度的结点(中等)的主要内容,如果未能解决你的问题,请参考以下文章