博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原创】Leetcode -- Reverse Linked List II -- 代码随笔(备忘)
阅读量:5235 次
发布时间:2019-06-14

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

题目:Reverse Linked List II

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

下面这段代码,有两个地方,一个是4、5行的dummy节点设置;另一个是11-14行,局部可视化到全局。

1  ListNode *reverseBetween(ListNode *head, int m, int n) { 2     if(m == n) return head; 3     n -= m; 4     ListNode prehead(0); 5     prehead.next = head; 6     ListNode* pre = &prehead; 7     while(--m) pre = pre->next;         8     ListNode* pstart = pre->next; 9     while(n--)10     {11         ListNode *p = pstart->next;12         pstart->next = p->next;13         p->next = pre->next;14         pre->next = p;15     }16     return prehead.next;17 }

对于我,想记录的是第二点。

局部可视化到全局的意思是每一次局部指针调整要完成一个完整的链表转换。也就是说不应该根据全局来考虑单步情况,而是单步情况就完成一个全局的实现。

即: 1-2-3-4-5, m=2, n=4,  全局思想是 把2-4进行转换,再拼接到1-5中。局部思想是每一个单步都完成全局变化,不考虑n是多少。比如第一步在2处, 转换为1-3-2-4-5。

这里有两个好处,1:代码简洁,前中后三个指针可完成所有的交换。2:需要考虑的情况少,不用像全局思路分两步执行。3:可递归的执行。

转载于:https://www.cnblogs.com/xiaoboCSer/p/4555440.html

你可能感兴趣的文章
Linux Shell 通配符、元字符、转义符使用实例介绍
查看>>
Log4j配置详解
查看>>
ACE中对于不同类型数据的最大值最小值管理ACE_Numeric_Limits
查看>>
Json 解析的三个分析网站
查看>>
Q文件无刷新上传插件下载及介绍
查看>>
C语言中的转义字符
查看>>
windows2008 r2 时间同步命令
查看>>
学习笔记之01-C语言概述
查看>>
codeforces 31C Schedule 解题报告
查看>>
Centos7 手动编译 RabbitMQ ,并安装php amqp
查看>>
Can't locate Params/Validate.pm in @INC (@INC contains: /usr/local/lib64/perl5 /
查看>>
航空连接器、端子
查看>>
web-场景说明
查看>>
Django模板
查看>>
Python--面向对象进阶
查看>>
信号振铃是怎么产生的------转自于余博士
查看>>
Spring总结六:AOP(面向切面编程)
查看>>
运营社群看这篇就够了,微信群门槛设置,用户思维、流量思维与产品思维
查看>>
MyBatis数据库测试代码自动生成
查看>>
JAVA笔记140-使用this语句解决构造器重载相互调用问题
查看>>