博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
61. Rotate List
阅读量:7212 次
发布时间:2019-06-29

本文共 1632 字,大约阅读时间需要 5 分钟。

Given a linked list, rotate the list to the right by k places, where k is non-negative.

Example 1:

Input: 1->2->3->4->5->NULL, k = 2Output: 4->5->1->2->3->NULLExplanation:rotate 1 steps to the right: 5->1->2->3->4->NULLrotate 2 steps to the right: 4->5->1->2->3->NULL

Example 2:

Input: 0->1->2->NULL, k = 4Output: 2->0->1->NULLExplanation:rotate 1 steps to the right: 2->0->1->NULLrotate 2 steps to the right: 1->2->0->NULLrotate 3 steps to the right: 0->1->2->NULLrotate 4 steps to the right: 2->0->1->NULL

难度:medium

题目:给定链表,向右旋转k个位置,k为非负整数。

思路:首先统计结点个数,并记录尾结点。然后用前后指针找出倒数第k + 1个结点。

Runtime: 7 ms, faster than 92.47% of Java online submissions for Rotate List.

Memory Usage: 27 MB, less than 41.82% of Java online submissions for Rotate List.

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; } * } */class Solution {    public ListNode rotateRight(ListNode head, int k) {        if (null == head || k <= 0) {            return head;        }        int cnt = 0;        ListNode ptr = head,tail = ptr;        while (ptr != null) {            tail = ptr;            ptr = ptr.next;            cnt++;        }        k = k % cnt;        ListNode dummyHead = new ListNode(0), lastKPtr = dummyHead;        dummyHead.next = head;        ptr = dummyHead.next;        while (ptr != null) {            if (--k < 0) {                lastKPtr = lastKPtr.next;            }            ptr = ptr.next;        }        tail.next = dummyHead.next;        dummyHead.next = lastKPtr.next;        lastKPtr.next = null;                return dummyHead.next;    }}

转载地址:http://akgum.baihongyu.com/

你可能感兴趣的文章
HTML5新特性总结
查看>>
超越时代的天才——图灵
查看>>
使用 ale.js 制作一个小而美的表格编辑器(2)
查看>>
mybatis常用标签和动态查询
查看>>
以太坊交易源码分析
查看>>
React组件常用设计模式之Render Props
查看>>
多多客DOODOOKE更新插件&模块及下载附件教程
查看>>
js简单倒计时
查看>>
手把手教你React(一)JSX与虚拟DOM
查看>>
snabbdom源码解析(七) 事件处理
查看>>
在北京做Java开发如何月薪达到两万,需要技术水平达到什么程度?
查看>>
移动端适配之二:visual viewport、layout viewport和ideal viewport介绍
查看>>
python大佬养成计划----flask_sqlalchemy操作数据库
查看>>
Chrome开发者工具关于网络请求的一个隐藏技能
查看>>
Git入门与开发
查看>>
Java编程基础04——流程控制语句
查看>>
vue-threeJS数据驱动的三维图形可视化
查看>>
Ubuntu 18.04.1 搭建Java环境和HelloWorld
查看>>
Flutter 实现根据环境加载不同配置
查看>>
浏览器保存密码后自动填充问题
查看>>