Reverse Linked List II
来源:互联网 发布:电力系统实时仿真软件 编辑:程序博客网 时间:2024/06/18 06:13
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.
Have you met this question in a real interview?
思路:对于一个链表: head->...->headstart->headtail(第m位)->第m+1位->...->pre(第n位)->cur(第n+1位)->.....->NULL
我们只需要略过链表前m-1个结点,将[m,n]中的结点反转,headtail指向cur完成没有反转结点的链接。
值得注意的是,headstart->next=pre(如果headstart不为空的话)
反转后的链表为:
(1)head->...->headstart->pre>...->headtail->cur(第n+1位)->.....->NULL(headstart!=NULL)
(2)pre>...->headtail->cur(第n+1位)->.....->NULL(headstart==NULL)
/** * 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==NULL||head->next==NULL) return head; if(m==n) return head; int num=1; ListNode * pre=NULL; ListNode * cur=NULL; ListNode * post=NULL; ListNode * headstart=NULL; ListNode * headend=head; ListNode * tailstart=NULL; while(num<m) { headstart=headend; headend=headend->next; num++; } pre=headend; tailstart=pre; cur=pre->next; pre->next=NULL; while(num<n) { post=cur->next; cur->next=pre; pre=cur; cur=post; num++; } tailstart->next=cur; if(headstart!=NULL) headstart->next=pre; else head=pre; return head; }};
0 0
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- Reverse Linked List II
- iOS LaunchImage --苹果官方文档总结
- 字典快速遍历
- Android电源管理分析
- 信号量与PV操作
- 在iPhone上使用 OpenCV
- Reverse Linked List II
- 10种令人惊讶的方式你的日常生活中正在收集数据的大数据野兽
- 游戏暂停时的屏蔽触摸
- 第十周项目四——大奖赛计分拓展(1)
- freemaker的简单应用
- ConcurrentHashMap原理分析
- Snow
- 一个教育行业老兵眼中的在线教育
- .Net程序员玩转Android开发---(4)注册页面布局