博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
92. Reverse Linked List II 反转链表 II
阅读量:6190 次
发布时间:2019-06-21

本文共 1408 字,大约阅读时间需要 4 分钟。

网址:https://leetcode.com/problems/reverse-linked-list-ii/

核心部分:通过a、b、c三个变量之间的相互更新,不断反转部分链表

然后将反转部分左右两端接上!

当测试数据 m 为 1 时,原始代码行不通。

故我们在原head前加一个fake_h节点,在函数部分将m++,n++,最后return fake_h->next

注意判断head为空 和 不反转任何部分(m==n)这两种情况

/** * 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->next || m==n)        {            return head;        }        m++;        n++;        ListNode* pre = NULL;        ListNode* first = new ListNode(0);        ListNode* a = NULL;        ListNode* b = new ListNode(0);        ListNode* c = new ListNode(0);        ListNode* fake_h = new ListNode(0);        fake_h->next = head;        ListNode* temp = fake_h;        int i = 1;        for(; i
next; pre = temp; first = pre->next; b = pre->next; c = b->next; cout << "b: " << b->val << endl; cout << "c: " << c->val << endl; for(; i
next = a; a = b; cout << "a: " << a->val << endl; b = c; c = c->next; } b->next = a; cout << "pre: " << pre->val << endl; pre->next = b; first->next = c; return fake_h->next; }};

 

转载于:https://www.cnblogs.com/tornado549/p/10639756.html

你可能感兴趣的文章
adb 操作命令简介(一)
查看>>
数据库实战案例—————记一次TempDB暴增的问题排查
查看>>
泛型的约束理解
查看>>
【转】POJ 1177 Picture(1)
查看>>
【转】EDK简单使用流程(3)
查看>>
我的2017之一只混迹于小城市的.net程序猿
查看>>
ORM正向和反向查询
查看>>
springboot-异步线程调用
查看>>
mod_rewrite模块的使用
查看>>
二路归并排序(非递归实现)
查看>>
「总结」 MLEAutoMaton的各种板子总结
查看>>
【codevs2333】&【BZOJ2002】弹飞绵羊[HNOI2010](分块)
查看>>
zabbix3.2自动发现批量监控redis端口状态
查看>>
C语言
查看>>
【算法学习笔记】81.动态规划 分类讨论 SJTU OJ 1075 括号匹配升级
查看>>
微信公众号开发(三)
查看>>
Session一次错误记录
查看>>
webView实现网页缩放
查看>>
C语言 16进制转float
查看>>
在Leangoo里怎么创建看板,更改看板名称?
查看>>