题目: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行,局部可视化到全局。

   ListNode *reverseBetween(ListNode *head, int m, int n) {
if(m == n) return head;
n -= m;
ListNode prehead();
prehead.next = head;
ListNode* pre = &prehead;
while(--m) pre = pre->next;
ListNode* pstart = pre->next;
while(n--)
{
ListNode *p = pstart->next;
pstart->next = p->next;
p->next = pre->next;
pre->next = p;
}
return prehead.next;
}

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

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

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

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

最新文章

  1. oracle打补丁
  2. SQL Injection bypass WAF
  3. JS中的 new 操作符简单理解
  4. Java 异常处理 练习2
  5. css3 动画 执行一次
  6. Node.js superagent 采集 URL 编码问题
  7. 在线CSS圆角生成器
  8. Unity3d HDR和Bloom效果(高动态范围图像和泛光)
  9. 什么是VPN?
  10. 网站10大致命SEO错误
  11. 百度地图在某架构下找不到符号.a文件的问题
  12. 无法启动 IIS Express Web 服务器
  13. Python爬虫小实践:爬取任意CSDN博客所有文章的文字内容(或可改写为保存其他的元素),间接增加博客访问量
  14. 在高分屏正确显示CHM文件
  15. [Ubuntu]修改文件夹及所有子文件夹权限
  16. LogDashboard 1.0.4 版本发布
  17. echo 1+2+"3+4+5“输出的结果是6
  18. Xshell使用笔记
  19. Socket.IO学习之基础入门
  20. Apache ab并发负载压力测试(python+django+mysql+apache)

热门文章

  1. [ios]scrollView实现移动与缩放
  2. Qt版helloworld
  3. CentOS-6.5安装配置JDK-7和JDK-8
  4. 《C++Primer》复习——with C++11 [3]
  5. c++ 钻石继承
  6. ByteArrary(优化数据存储和数据流)
  7. switch_to 理解
  8. hdoj 2112 HDU Today
  9. POJ 3104
  10. POJ 1060 Modular multiplication of polynomials(多项式的加减乘除,除法转化成减法来求)