reverseBetween- lista enlazada inversa

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

Supongo que te gusta

Origin blog.csdn.net/tangshuai96/article/details/114968997
Recomendado
Clasificación