zoukankan      html  css  js  c++  java
  • Leetcode: 92. Reverse Linked List II

    Description

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

    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.
    

    思路

    • 先找到m的位置,记录它的前一个pre,然后在[m,n]之间逆转链表,记录逆转后的链表尾tail,和链表头cur。最后把逆转后的链表接到原链表合适位置

    代码

    /**
     * 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 *pre = NULL, *ptr = head;
            ListNode *res = NULL;
            ListNode *cur = NULL, *tail = NULL;
            ListNode *tmp = NULL;
            
            int k = 1;
            while(k < m){
                pre = ptr;
                if(res == NULL)
                    res = pre;
                ptr = ptr->next;
                k++;
            }
            
            while(k <= n){
                tmp = ptr->next;
                if(cur == NULL){
                    cur = ptr;
                    tail = ptr;
                }
                else{
                    ptr->next = cur;
                    cur = ptr;
                }
                ptr = tmp;
                k++;
            }
            
            if(res == NULL){
                res = cur;
            }
            else pre->next = cur;
            
            tail->next = ptr;
            
            return res;    
        }
    };
    
  • 相关阅读:
    Servlet的建立以及配置使用
    maven 安装 及其 创建
    错误总结
    使用分层实现业务处理
    JSP数据交互(三)
    JSP数据交互(二)
    JSP数据交互(一)
    动态网页开发基础
    记录mysql编码问题
    .net core 2.0 升级 2.1 访问mysql出现bug解决
  • 原文地址:https://www.cnblogs.com/lengender-12/p/7059924.html
Copyright © 2011-2022 走看看