/*
 * function ListNode(x){
 *   this.val = x;
 *   this.next = null;
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param head ListNode类 
 * @param m int整型 
 * @param n int整型 
 * @return ListNode类
 */
function reverseBetween( head ,  m ,  n ) {
    // write code here
    const nodeArr = []
    while(head) {
        nodeArr.push(new ListNode(head.val))
        head = head.next
    }
    const newArr = nodeArr.slice(0, m - 1).concat(nodeArr.slice(m - 1, n).reverse(), nodeArr.slice(n))
    const newNode = new ListNode(0)
    let cur = newNode;
    newArr.forEach(n => {
        cur.next = n
        cur = cur.next
    })
    return newNode.next
}
module.exports = {
    reverseBetween : reverseBetween
};