zoukankan      html  css  js  c++  java
  • LeetCode:Reverse LinkedListⅡ

    Problem:

    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 ≤ mn ≤ length of list.

    Solution:逆转用的头插法

    /**
     * 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 result(-1);
            result.next=head;
            
            ListNode *prev=&result;
            
            for(int i=0;i<m-1;i++)
                prev=prev->next;
            
            ListNode *head2=prev;
          
            prev=head2->next;      
            ListNode *cur=prev->next;     
            for(int i=m;i<n;i++)
            {
                prev->next=cur->next;
                cur->next=head2->next;
                head2->next=cur;  //头插法
                cur=prev->next;
            }
          
           return result.next;
            
            
        }
    };
    
  • 相关阅读:
    C#绘制矢量图
    VC6配置boost
    MapX特性分析
    BCG文档
    VC单实例运行
    MapInfo7.0序列号和许可文件
    Mapx的VC开发实践
    网页设计实训
    illustrator初学之绘图基础1
    Ai绘图基础2
  • 原文地址:https://www.cnblogs.com/xiaoying1245970347/p/4597206.html
Copyright © 2011-2022 走看看