[92.] bouton d'alimentation liste inverse II

Tout d'abord, le sujet description:

Liste inverse à partir de la position m à n. S'il vous plaît utiliser le voyage à l'analyse est l'inversion complète.

Description:
. 1 ≤ ≤ m ≤ n-liste longueur.

exemple:

输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL

Source: Bouton séjour (LeetCode)
lien: https: //leetcode-cn.com/problems/reverse-linked-list-ii
copyright par prélèvement sur tous les réseaux. réimpression commerciale s'il vous plaît contacter la réimpression officielle autorisée, non commercial s'il vous plaît indiquer la source.

En second lieu, les idées de résolution de problèmes:

Insérer ici l'image Description

En troisième lieu, Code Description:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode reverseBetween(ListNode head, int m, int n) {
       if(head==null||head.next==null||m==n){
           return head;
       }
       ListNode newHead=new ListNode(-1);
       newHead.next=head;
       ListNode first=newHead;
       //first为第(m-1)个节点
       for(int i=1;i<m;i++){
           first=first.next;
       }
       //second为链表反转之后的最后一个节点
       //注意:一定要保存Second节点,在后面首尾相接时会用到。
       ListNode second=first.next;
       //l为链表反转之后的第一个节点
       ListNode l=second;
       //third为第(n+1)个节点
       ListNode third=l.next;
       //反转链表
       for(int i=m;i<n;i++){
           ListNode next=third.next;
           third.next=l;
           l=third;
           third=next;
       }
       //将(m-1)个节点的next指向反转之后的头结点
       first.next=l;
       //将反转之后的最后一个节点的next指向(n+1)个节点
       second.next=third;
       return newHead.next;
    }
}
Publié 75 articles originaux · a gagné les éloges 14 · vues 1891

Je suppose que tu aimes

Origine blog.csdn.net/qq_45328505/article/details/104870231
conseillé
Classement