leetcode: Reverse Linked List II
来源:互联网 发布:python开源聊天机器人 编辑:程序博客网 时间:2024/04/29 12:56
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.
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: void reverseList(ListNode* &node1, ListNode* &node2) { ListNode *pPreNode = NULL; ListNode *pCurNode = node1; ListNode *pNextNode = node1->next; while (pCurNode != node2) { pNextNode = pCurNode->next; pCurNode->next = pPreNode; pPreNode = pCurNode; pCurNode = pNextNode; } pCurNode->next = pPreNode; } ListNode *reverseBetween(ListNode *head, int m, int n) { ListNode fakeHead(0); ListNode *pPreNode = &fakeHead; ListNode *pCurNode = head; ListNode *pAfterNode; ListNode *pBeforeNode; pPreNode->next = pCurNode; ListNode *reverseN1; ListNode *reverseN2; int step = 1; while (step <= n && pCurNode) { if (step == m) { reverseN1 = pCurNode; pBeforeNode = pPreNode; } if (step == n) { reverseN2 = pCurNode; pAfterNode = pCurNode->next; break; } pPreNode = pPreNode->next; pCurNode = pCurNode->next; step++; } if (reverseN1 != reverseN2) { reverseList(reverseN1, reverseN2); } pBeforeNode->next = reverseN2; reverseN1->next = pAfterNode; return fakeHead.next; }};
0 0
- LeetCode[Linked List]: Reverse Linked List II
- LeetCode: Reverse Linked List II
- LeetCode: Reverse Linked List II
- [LeetCode] Reverse Linked List II
- [Leetcode] Reverse Linked List II
- [LeetCode]Reverse Linked List II
- Leetcode: Reverse Linked List II
- [Leetcode]Reverse Linked List II
- [leetcode]Reverse Linked List II
- LeetCode-Reverse Linked List II
- LeetCode Reverse Linked List II
- [leetcode] Reverse Linked List II
- LeetCode - Reverse Linked List II
- [LeetCode] Reverse Linked List II
- LeetCode | Reverse Linked List II
- 【leetcode】Reverse Linked List II
- Leetcode: Reverse Linked List II
- leetcode Reverse Linked List II
- wordpress更改默认端口的方法
- CUDA常见错误及其解决办法(转载加自己补充)
- Nagios 监控显示主机状态为DOWN,服务却OK
- 小根堆实现
- 提高Bugzilla提交和修改bug时发送mail的效率
- leetcode: Reverse Linked List II
- 在子线程中如何更新ui
- Python中文分词组件jieba
- LEETCODE: 4Sum
- Random.Range 范围
- javascript动态创建元素原理之节点操作
- pymysql学习
- 系统方法定位 IOS
- 配置log4j和logback将日志记录到syslog