Reverse Linked List II
来源:互联网 发布:淘宝客推广加权重吗 编辑:程序博客网 时间:2024/06/02 00:37
一、问题描述
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.
二、思路
首先,定义一个头结点,指向head;然后循环找到m-1位置作为first,再执行循环逆置链表,直到n位置结束,当到达n时,用last指向最后一个节点;最后将first节点的下个节点连接到第m个节点位置,完成逆置,最后返回头结点的下一个节点。
三、代码
/** * 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) { ListNode *dummy = new ListNode(0),; dummy->next = head; ListNode*cur = dummy, *prev = NULL, *first = NULL, *last = NULL; for (int i = 0; i <= n; i++) { if (i == m - 1) { first = cur; cur = cur->next; } else if (i > m - 1) { if (i == n) last = cur; ListNode *temp = cur; cur = cur->next; temp->next = prev; prev = temp; } else { cur = cur->next; } } first->next->next = cur; first->next = last; return dummy->next;}};
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
- 机器学习-逻辑回归-代价函数
- bzoj1101(莫比乌斯反演)
- MySQL 5.6安装
- Message from debugger: Terminated due to signal 15
- 笔记本添加固态硬盘记
- Reverse Linked List II
- 我突然之间找到了自我
- 欢迎使用CSDN-markdown编辑器
- Day20、冒泡、快速、选择、插入、二分查找
- 【最近相关】:2016-8-24
- 双击磁盘闪屏以及双击桌面程序闪屏打不开怎么办
- 【C++】STL常用容器总结之三:向量vector
- Hibernate 主键维护策略和hibernate 常见的映射类型
- Hash索引和BTREE索引