博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[leetcode-92-Reverse Linked List II]
阅读量:7091 次
发布时间:2019-06-28

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

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

思路:

感觉自己的思路太啰嗦,那也放这儿吧,记录一下:

用index时刻关注位置,看是否到达m或者n。

当没有到达m的时候,只需向后移动指针,到达m的时候,要断开左右两部分指针。

然后用头插法在左边链表最后的位置插入m到n之间的结点。

需要格外注意的就是边界的情况。

ListNode* reverseBetween(ListNode* head, int m, int n) {     ListNode dumb(0);     dumb.next = head;     if(m == n) return head;     ListNode* preM = &dumb;//保存m之前结点     ListNode* pM = head,*pN = head ,*temp = head;     int index=1;     while(pN != NULL)     {         if(index < m)         {             index++;             preM = pM;             pM = pM->next;             pN = pN->next;         }         else if(index >= m && index <= n)         {             temp = pN->next;             pN->next = preM->next;             preM->next =pN;             pN = temp;             index++;         }         else if(index > n)        break;     }        pM->next = pN;   return dumb.next;}

ListNode *reverseBetween2(ListNode *head, int m, int n) {    if(m==n)return head;    n-=m;    ListNode prehead(0);    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;}

参考:

 

转载于:https://www.cnblogs.com/hellowooorld/p/6681538.html

你可能感兴趣的文章
Android小知识-Retrofit框架的介绍以及使用方式
查看>>
设计模式(八)——策略模式
查看>>
Java多线程 -- 锁降级
查看>>
vux之x-input使用以及源码解读
查看>>
vue指令
查看>>
打死也不敢说自己火的面试题更新第二弹
查看>>
Android应用内悬浮窗,无需一切权限,适配所有ROM和厂商FloatWindow
查看>>
iOS逆向之旅(基础篇) — 汇编(三) — 汇编下的 Switch语句
查看>>
通俗易懂--决策树算法、随机森林算法讲解(算法+案例)
查看>>
1024程序员节最新福利之2018最全java资料集合
查看>>
《图解http》笔记
查看>>
ReactNative集成到原生项目
查看>>
为什么大部分编程语言的数组的下标都从0开始?
查看>>
react16.7.0-alpha hooks的api介绍
查看>>
『中级篇』 Linux网络命名空间(25)
查看>>
JS计算精度小记
查看>>
js的各种距离计算(较全)
查看>>
微信小程序异步API为Promise简化异步编程
查看>>
关于java泛型大大小小的那些事
查看>>
此面试题版本落后-请勿观看
查看>>