给出一个列表,将列表向右旋转k个地方,其中k是非负数。
来源:互联网 发布:网络视频节目许可证 编辑:程序博客网 时间:2024/06/05 04:21
本题源自leetcode 61
-----------------------------------------------------------
思路:遍历一遍链表统计长度以及找到链表尾节点。
2 将链表构造成一个环,然后找到要转换的节点的头结点,断开。
代码:
ListNode* rotateRight(ListNode* head, int k) { if(!head || k == 0) return head; int len = 1; ListNode* p = head; while(p->next){ p = p->next; len++; } p->next = head; //构成一个环 if(k %= len){ for(int i = 0; i < len - k; i++) p = p->next; } ListNode* pre = p->next; p->next = NULL; return pre; }
思路2 用快慢指针,让快指针先走k步,然后满指针开始走,快指针走到尾节点,慢指针则走到倒数第k个节点的前一个节点。
ListNode* rotateRight(ListNode* head, int k) { if(!head || k == 0) return head; int len = 0; ListNode* p = head; while(p){ p = p->next; len++; } k %= len; ListNode* root = new ListNode(0); root->next = head; ListNode* pre = head; ListNode* post = head; while(pre && k > 0){ pre = pre->next; k--; } while(pre->next && post){ pre = pre->next; post = post->next; } pre->next = root->next; root->next = post->next; post->next = NULL; return root->next; }
阅读全文
0 0
- 给出一个列表,将列表向右旋转k个地方,其中k是非负数。
- 给定一个列表,将列表向右旋转k个位置,其中k是非负数。
- Rotate List (列表旋转k个元素)
- 链表操作----将单链表向右旋转 K 个位置
- 每日算法之四十三:Rotate List (列表旋转k个元素)
- P03 (*) 获取列表的第K个元素
- leetCode之合并k个排序的列表
- 链表翻转:给出一个链表和一个数k,链表前k个节点进行翻转
- Leetcode #23 Merge k Sorted Lists 合并K个有序列表 解题报告
- 给出宫,求宫的开始列号(K*K,K*K)数独 一共有K*K*K*K个格子
- 将一个链表后K个结点移到链表头
- 新浪微博 陈利人 面试题 给定k个数组,每个数组有k个整数。每个数组中选取一个整数,一共k个整数,取其和,一共可以得到k^k个和。给出方法,求得这k^k个和中,最小的k个。
- 将一个16K的文件循环读到若干个4k的文件里面
- k/3Cloud 列表行颜色
- 链表逆置(给出一个链表和数k)
- 输入n个整数,输出其中最小的k个
- 输入n个整数,输出其中最小的k个
- 输入n个整数,输出其中最小的k个
- MANIFEST.MF说明
- 探究Struts2运行机制:StrutsPrepareAndExecuteFilter 源码剖析
- Java 修饰符(Modifier)声明顺序
- 数据结构-树的基础代码
- python : flask and pygal bar
- 给出一个列表,将列表向右旋转k个地方,其中k是非负数。
- 前端面试题(一)
- Android布局之 ListView 去除边缘阴影、选中色、拖动背景色等(android:cacheColorHint="#00000000")
- [leetcode] 14. Longest Common Prefix[leetcode] 14. Longest Common Prefix
- Mybatis_resultMap
- 格式塔原理
- Spring Cloud Sleuth Zipkin 展示追踪数据
- Unity机器学习代理ML-Agents v0.2版本
- java入门要看,帮你找准未来方向!