旋转链表
2016-07-14 16:14
162 查看
题目
给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数样例
给出链表1->2->3->4->5->null和k=2
返回4->5->1->2->3->null
解题
找到第k个结点找到最好一个结点
最后一个结点链接到头结点
第k个结点后面断开
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { /** * @param head: the List * @param k: rotate to the right k places * @return: the list after rotation */ public ListNode rotateRight(ListNode head, int k) { // write your code here if(k<0) return null; if(k==0||head==null || head.next==null) return head; int size = size(head); k = k%size; k = size - k; ListNode kNode = head; while(k>1){ // 找到第 k个结点 k--; kNode = kNode.next; } ListNode lastNode = kNode; while(lastNode.next!=null){ // 找到最好一个结点 lastNode = lastNode.next; } lastNode.next = head; // 最后一个结点链接到头结点 ListNode newHead = kNode.next; // 新的头结点是 k + 1 结点 kNode.next =null; // 第k个结点后断开 return newHead; } public int size(ListNode head){ ListNode p = head; int size = 0; while(p!=null){ p = p.next; size++; } return size; } }
相关文章推荐
- HDU 3605 网络流
- Eclipse下svn的创建分支/合并/切换使用
- ./是当前目录 ../是当前的上一级目录。上上级就是../../一般绝对路径时候常用
- css控制内容显示省略号
- 虚拟机中实现rhel 6与真机无线和有线桥接连接外网
- 项目管理之 Project Sponsor and Stakeholder
- 设备驱动模型:总线bus_type 设备device 驱动driver
- 人才济济的时代诚信才能脱颖而出
- ButterKnife简介
- zabbix 安装和基本配置
- 仿照群英传-自定义View时钟样式
- webservice-httpd
- 缺省路由的使用
- java.util.concurrent源码学习三
- jQuery Autocompleter 内容自动补全插件
- zeppelin源码分析(7)——interpreter调试
- opencv学习—HighGUI部分函数介绍及例子
- 看了这些程序员接私活的渠道,瞬间爆炸!
- C#中使用MySqlCommand执行插入语句后获取该数据主键id值的方法
- 正则表达式