Título
Invierta la lista enlazada de la posición m a la n. Utilice un escaneo para completar la reversión.
Explicación:
1 ≤ m ≤ n ≤ longitud de la lista enlazada.
Ejemplo:
Entrada: 1-> 2-> 3-> 4-> 5-> NULL, m = 2, n = 4
Salida: 1-> 4-> 3-> 2-> 5-> NULL
Título
No es difícil, solo ve al código
Demostración de código
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
// public class ListNode {
// int val;
// ListNode next;
// ListNode() {}
// ListNode(int val) { this.val = val; }
// ListNode(int val, ListNode next) { this.val = val; this.next = next; }
// }
class Solution {
public ListNode reverseBetween(ListNode head, int left, int right) {
if (left==right)
return head;
ListNode pre=head;
ListNode leftNode=new ListNode();
ListNode rightNode=new ListNode();
int flag=1;
ListNode prelef=new ListNode();
while(head!=null)
{
if(flag==left-1)
prelef=head;
if(flag==left)
{
leftNode=new ListNode(head.val,head.next);
}
if(flag==right)
{
rightNode=new ListNode(head.val,head.next);
break;
}
head=head.next;
flag++;
}
ListNode leftNext=leftNode.next;
ListNode Next=leftNext.next;
leftNode.next=rightNode.next;
//这边打个标记
while (leftNext!=rightNode.next)
{
leftNext.next=leftNode;
leftNode=leftNext;
leftNext=Next;
if (Next!=null)
Next=Next.next;
}
if(left==1)
return leftNode;
prelef.next=leftNode;
return pre;
}
}
efecto
La
respuesta de información fue exitosa:
tiempo de ejecución: 0 ms, derrotando al 100,00% de los usuarios de Java
Consumo de memoria: 36 MB, derrotando al 71,42% de los usuarios de Java