翻转区间是m=2,n=4, 把cur移动到第二个节点(也就是m位置),同时保存cur前一个节点pre 每次头插的是cur->next  1 2 3 4 5(cur->next=3,把3头插到3 2 4的最前面,其余顺移) ——> 1 3 2 4 5(cur->next=4) ——> 1 4 3 2 5   注意:万一m=1,那么pre需要一个哨兵位安放 (自己看了很久总结的个人理解) ListNode* reverseBetween(ListNode* head, int m, int n) { ListNode* res=new ListNode(-1); //设置哨兵位,防止pre越界 res->next=head; //哨兵位和链表连上 ListNode* pre=res; ListNode*cur=head; for(int i=1;i<m>next; } //cur在m个节点上,pre是他前一个节点 for(int i=m;i<n>next; cur->next=tmp->next; tmp->next=pre->next; pre->next=tmp; } return res->next; } };</n></m>
点赞

相关推荐

不愿透露姓名的神秘牛友
02-12 10:05
小米集团 算法工程师 28.0k*15.0
泡沫灬一触即破:楼上那个看来是看人拿高薪,自己又不如意搁这泄愤呢是吧,看你过往评论很难不怀疑你的精神状态
点赞 评论 收藏
分享
01-26 18:45
门头沟学院 Java
一天代码十万三:哥们实习再包一下吧,产出太笼统了,尽量体现业务
点赞 评论 收藏
分享
牛客网
牛客企业服务