翻转部分链表
来源:互联网 发布:nginx 限制ip访问次数 编辑:程序博客网 时间:2024/06/16 03:41
单链表翻转的第二个版本。
题目:Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given1->2->3->4->5->NULL, m = 2 and n = 4,
return1->4->3->2->5->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
思路:仍然使用上一个翻转链表的思想。先定义一个计数器,用两个指针,找到链表翻转的起始地和它的上一个节点pre,记录下这个pre节点,从翻转开始,每一次把当前节点后面的一个节点放到pre后面,如此循环n-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) { if(head==NULL || head->next==NULL){ return head; } ListNode *dummy = new ListNode(-1); dummy->next = head; ListNode *pre = dummy; ListNode *cur = head; int idx = 1; while(idx < m){//往后走m-1个,找到翻转的起始点 pre = pre->next; cur = cur->next; idx++; } for(int i = 0;i < (n-m);i++){//循环n-m次,刚好翻转m到n之间的节点 ListNode *temp = cur->next; cur->next = temp->next; temp->next = pre->next; pre->next = temp; } return dummy->next; }};
阅读全文
0 0
- 翻转部分链表
- 翻转部分链表
- 部分翻转链表
- 链表的部分翻转
- 链表的部分翻转
- 链表的部分翻转
- [C++]链表部分翻转
- 链表部分翻转-Java
- Java-链表的部分翻转
- 算法学习-链表的部分翻转
- <LeetCode> 题36:翻转链表2(翻转指定部分)
- 翻转有序链表的部分节点(美团)
- 面试题—链表的‘部分’翻转
- 部分翻转链表Reverse Linked List II
- 无情链表的创建,,翻转翻转
- 字符串的部分翻转
- 链表翻转程序
- 链表翻转
- 百度定位绘制轨迹
- 二十一、中介者模式——设计模式学习笔记
- 使用U盘安装windows系统教程
- C++实现日期类-Date
- C++ Primer 第16章 模板与泛型编程 学习笔记
- 翻转部分链表
- 数据库浅谈
- tableview 重用机制
- 剑指offer面试题26-复杂链表的复制
- 【剑指offer】题18:树的子结构
- 四大作用域对象
- vue-router配合ElementUI实现导航
- Windows7下使用VS2015搭建Lua开发环境
- 归并排序 & 逆序对