LintCode : 旋转链表
来源:互联网 发布:2016cydia软件源 编辑:程序博客网 时间:2024/05/22 16:55
LintCode : 旋转链表
题目
给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数
样例
给出链表1->2->3->4->5->null和k=2
返回4->5->1->2->3->null
思路
k对链表长度取余之后的结果是实际要移动的长度。考虑NULL和k=0的情况不用移动。剩下的情况我们在表头前开辟实际移动长度个空间,将尾部要移动的数据拷贝到表头前开辟的空间中。
代码
ListNode *rotateRight(ListNode *head, int k) { if(head == NULL) return head; int num = 0; for(ListNode *i = head; i != NULL; i = i->next) num++; k = k % num; if(k == 0 || num == 1) return head; ListNode *ans = (ListNode *)malloc(sizeof(ListNode)); ListNode *p = ans; for(int i = 1; i < k; i++) { ListNode *temp = (ListNode *)malloc(sizeof(ListNode)); p->next = temp; p = p->next; } p->next = head; p = ans; ListNode *tail = head; ListNode *q = head; int i = 0; while(q != NULL) { if(i > k) tail = tail->next; q = q->next; i++; } for(q = tail->next; q != NULL; q = q->next) { p->val = q->val; p = p->next; } tail->next = NULL; return ans;}
0 0
- LintCode-旋转链表
- LintCode-旋转链表
- LintCode:旋转链表
- LintCode : 旋转链表
- 旋转链表-LintCode
- lintcode-旋转链表-170
- LintCode 170-旋转链表
- lintcode(170)旋转链表
- [Lintcode] #170 旋转链表
- [Lintcode]Rotate List旋转链表
- LintCode-旋转图像
- lintcode-旋转图像-161
- LintCode:旋转图像
- LintCode:旋转字符串
- lintcode ----旋转字符串
- LintCode:旋转图像
- Lintcode 恢复旋转数组
- LintCode 8 旋转字符串
- Java线程之fork/join框架
- 在Linux(包括Ubuntu)下快速安装Phpmyadmin
- HDU 1016 Prime Ring Problem(DFS)
- 多边形的研究
- c#上机实验之题目六
- LintCode : 旋转链表
- 开发的细碎点
- container_of 函数
- nodepad++之jsonviewer插件
- C# Winform 窗体美化(七、Win7 Aero 毛玻璃效果)
- linux安装opencv:ubuntu14.04+opencv3.1.0
- 基于React Native构建的仿京东客户端
- datagrid 加入快捷键
- 微机接口寻址方式分类