zoukankan      html  css  js  c++  java
  • leetcode:Reverse Linked List II

    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->NULLm = 2 and n = 4,

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

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

    解答思路:记录[m, n]范围内的结点,然后做一次reverse。

    /**
     * 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) {  
            vector<ListNode*> range(n - m + 1);  
              
            ListNode* iter = head;  
            for(int i = 1; i < m; ++i)  
                iter = iter->next;  
                  
            for(int i = m, j = 0; i <= n; ++i, ++j)  
            {  
                range[j] = iter;  
                iter = iter->next;  
            }  
              
            for(size_t i = 0; i < range.size() / 2; ++i)  
                swap(range[i]->val, range[range.size() - i - 1]->val);  
              
            return head;  
        }  
    };
    

      

  • 相关阅读:
    基本数据结构:链表(list)
    字符串函数
    TCHAR
    开源库链接
    视频 链接
    tabbar
    加密
    安全类链接,https
    资本
    审核 -链接 - 发布证书
  • 原文地址:https://www.cnblogs.com/carsonzhu/p/4590697.html
Copyright © 2011-2022 走看看