题解 | #链表内指定区间反转#重建链表,容易一些

链表内指定区间反转

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

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 * }
 */

public class Solution {
    /**
     * 
     * @param head ListNode类 
     * @param m int整型 
     * @param n int整型 
     * @return ListNode类
     */
    public ListNode reverseBetween (ListNode head, int m, int n) {
        // write code here
        List<Integer> list = new ArrayList<>();
		ListNode node = head;
		while (true) {
			if (node == null) {
				break;
			}
			list.add(node.val);
			if (node.next == null) {
				break;
			}
			node = node.next;
		}
		List<Integer> subList = list.subList(m - 1, n);
		Collections.reverse(subList);
		for (int i = 0; i < subList.size(); i++) {
			list.set(i + m - 1, subList.get(i));
		}
		ListNode newNode = new ListNode(-1);
		ListNode temp = newNode;
		for (int num : list) {
			temp.next = new ListNode(num);
			temp = temp.next;
		}
		return newNode.next;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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