LeetCode 92 Reverse Linked List II(翻转链表II)(Linked List)(*)

Posted nomasp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 92 Reverse Linked List II(翻转链表II)(Linked List)(*)相关的知识,希望对你有一定的参考价值。

翻译

将一个链表中位置m和n的节点进行翻转。就地且一次通过。

例如
给定 1->2->3->4->5->NULL, m = 2 和n = 4,

返回 1->4->3->2->5->NULL.

备注:
给定的m和n满足以下条件:
1 <= m <= n <= 链表的长度

原文

Reverse a linked list from position m to n. Do it in-place and in one-pass.

For example:
Given 1->2->3->4->5->NULL, m = 2 and n = 4,

return 1->4->3->2->5->NULL.

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

分析

C Plus Plus

/**
 * Definition for singly-linked list.
 * struct ListNode 
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) 
 * ;
 */
class Solution 
public:
    ListNode* reverseBetween(ListNode* head, int m, int n) 
        ListNode *newHead = new ListNode(0);
        newHead->next = head;

        ListNode *c = newHead;
        for (int i = 0; i < m - 1; i++) 
            c = c->next;
        
        ListNode *p = c->next;
        for (int i = 0; i < n - m; i++) 
            ListNode *t = p->next;
            p->next = t->next;
            t->next = c->next;
            c->next = t;
        
        return newHead->next;
    
;

Java

updated at 2016/09/23
/**
 * Definition for singly-linked list.
 * public class ListNode 
 *     int val;
 *     ListNode next;
 *     ListNode(int x)  val = x; 
 * 
 */
public class Solution 
    ListNode reverseBetween(ListNode head, int m, int n) 
        ListNode newHead = new ListNode(0);
        newHead.next = head;
        ListNode c = newHead;

        for (int i = 0; i < m - 1; i++) 
            c = c.next;
        

        ListNode p = c.next;
        for (int i = 0; i < n - m; i++) 
            ListNode tmp = p.next;
            p.next = tmp.next;
            tmp.next = c.next;
            c.next = tmp;
        
        return newHead.next;
    

以上是关于LeetCode 92 Reverse Linked List II(翻转链表II)(Linked List)(*)的主要内容,如果未能解决你的问题,请参考以下文章

[LeetCode92]Reverse Linked List II

#Leetcode# 92. Reverse Linked List II

Leetcode 92. Reverse Linked List II

leetcode.92. Reverse Linked List II

[LeetCode]92. Reverse Linked List II

LeetCode 92. Reverse Linked List II