旋转链表
来源:互联网 发布:香港第一美女是谁知乎 编辑:程序博客网 时间:2024/05/16 17:30
题目
给定一个链表,旋转链表,使得每个节点向右移动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; }}
0 0
- 单向链表旋转
- 旋转链表
- LintCode-旋转链表
- LintCode-旋转链表
- 旋转链表
- LintCode:旋转链表
- 旋转链表
- 旋转链表
- 链表旋转
- 旋转链表
- 旋转链表
- 旋转链表
- LintCode : 旋转链表
- 旋转链表
- 旋转链表-LintCode
- 61.链表旋转
- Rotate List 旋转链表
- 旋转链表,递归实现
- 项目管理之 Project Sponsor and Stakeholder
- POJ 2546 Circular Area 两圆相交面积
- css控制内容显示省略号
- DJANGO学习笔记
- Android软件下载及环境配置(SDK无需代理翻墙,离线更新)
- 旋转链表
- 设计模式(二):抽象工厂AbstractFactory(创建型模式)
- AFNetWorking 深度理解
- 外观模式/门面模式
- CSS 选择器参考手册
- Inspector属性面板中[HideInInspector]、ExecuteInEditMode等属性介绍
- 【Android】Android之开发问题集
- 详细解析Linux /etc/passwd文件
- 汉若塔问题