Reverse Linked List II

来源:互联网 发布:贵阳广电网络缴费活动 编辑:程序博客网 时间:2024/05/17 04:31

Reverse a linked list from position m to n.

 Notice

Given m, n satisfy the following condition: 1 ≤ m ≤ n ≤ length of list.

Example

Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2->5->NULL.

java
/** * Definition for ListNode * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    /*     * @param head: ListNode head is the head of the linked list      * @param m: An integer     * @param n: An integer     * @return: The head of the reversed ListNode     */    public ListNode reverseBetween(ListNode head, int m, int n) {        // write your code here        if (head == null || m > n) {            return null;        }        ListNode dummy = new ListNode(0);        dummy.next = head;        head = dummy;        for (int i = 1; i < m; i++) {            head = head.next;            if (head == null) {                return null;            }        }        ListNode preNode = head;        ListNode mNode = head.next;
"""Definition of ListNodeclass ListNode(object):    def __init__(self, val, next=None):        self.val = val        self.next = next"""class Solution:    """    @param: head: ListNode head is the head of the linked list     @param: m: An integer    @param: n: An integer    @return: The head of the reversed ListNode    """    def reverseBetween(self, head, m, n):        # write your code here        if head is None or m > n:            return None        dummy = ListNode(-1, head)        head = dummy        for i in range(1, m):            head = head.next            if head is None:                return None        preNode, mNode = head, head.next        nNode, postNode = mNode, mNode.next        for i in range(m, n):            if postNode is None:                return None            temp = postNode.next            postNode.next = nNode            nNode = postNode            postNode = temp        preNode.next = nNode        mNode.next = postNode        return dummy.next                

ListNode nNode = mNode; ListNode postNode = mNode.next; for (int i = m; i < n; i++) { if (postNode == null) { return null; } ListNode temp = postNode.next; postNode.next = nNode; nNode = postNode; postNode = temp; } preNode.next = nNode; mNode.next = postNode; return dummy.next; }}

python

原创粉丝点击