• 【力扣 093】92. 反转链表 II


    92. 反转链表 II

    给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
     

    示例 1:


    输入:head = [1,2,3,4,5], left = 2, right = 4
    输出:[1,4,3,2,5]
    示例 2:

    输入:head = [5], left = 1, right = 1
    输出:[5]
     

    提示:

    链表中节点数目为 n
    1 <= n <= 500
    -500 <= Node.val <= 500
    1 <= left <= right <= n
     

    进阶: 你可以使用一趟扫描完成反转吗?

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/reverse-linked-list-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    代码实现:

    /**
     * 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) 
        {
            if(!head) return head;
            ListNode *dumy = new ListNode(0), *p = dumy;
            dumy->next = head;
            for(int i = 0; i < m-1; ++i)
                p = p->next;
    
            ListNode *curr = p->next;
            for(int i = m; i < n; ++i)
            {
                ListNode *x = p->next;
                p->next = curr->next;
                curr->next = curr->next->next;
                p->next->next = x;
    
            }
            return dumy->next;
        }
    };
  • 相关阅读:
    文件权限
    函数指针
    位操作
    宏定义
    GNU gcc常用编译选项
    SHELL编程(六)---------数组和函数
    26.使用中间件的方式包装日志输出
    25.最基本的日志输出方式,内置日志包使用
    24.把熔断器整合到我们的客户端代码中(初步)
    23.熔断器学习,熔断器的三种状态,状态获取
  • 原文地址:https://www.cnblogs.com/sunbines/p/16331847.html
Copyright © 2020-2023  润新知