题解 | #链表内指定区间反转#

链表内指定区间反转

https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @param m int整型
     * @param n int整型
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {
       int i = 1;
        int j = 0;
        int[] tempData = new int[(n - m) + 1];
        int tempDataI = 0;
        ListNode tempNode = head;
        while (tempNode != null) {
            if (i >= m && i <= n) {
			  // 取出反转数据
                tempData[tempDataI] = tempNode.val;
                tempDataI++;
            }
            tempNode = tempNode.next;
            i++;
        }
        ListNode resultTemp = head;
        j = tempData.length - 1;
        int resultI = 1;
        while (resultTemp != null) {
            if (resultI >= m && resultI <= n) {
			  // 给[m,n]区间的链表数据赋值
                resultTemp.val = tempData[j];
                j--;
            }
            resultTemp = resultTemp.next;
            resultI++;
        }
        return head;
    }
}

#日常学习打卡#
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务