美文网首页
LeetCode 61.旋转链表

LeetCode 61.旋转链表

作者: 风卷晨沙 | 来源:发表于2019-06-04 15:27 被阅读0次

1.题目

https://leetcode-cn.com/problems/rotate-list/

2.题解

这道题我是在听歌的时候想到的方法,那就是“爱的魔力转圈圈,。。。”所以我觉得很有趣。这道题是给我们一个链表对象head和一个向右旋转的次数K;既然得到的结果是要在原有的基础上进行旋转的,那么第一个想法就是把他的首尾给连起来;让这个链表对象变成循环链表。我们可以先通过对head.next!=null的判断来得到这个链表的长度。一通循环判断之后得到链表的长度和这个链表的尾部,将这个尾部连接到head上面得到循环链表。之后再算出往左旋转的次数,按照这个次数执行旋转。之后再断开链子指向null;即可得到本题结果。

3.代码

/**
 * 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(k<0){
            return null;
        }
        if(head==null||head.next==null){
            return head;
        }
        //主要情况
        //链表长度
        int count=1;
        ListNode pre=head;
        while (pre.next!=null){
           count++;
           pre=pre.next;
        }
        //做成循环链表
        pre.next=head;
        //loop 就是循环链表
        ListNode loop=pre;
        int offsetLeft = count - k % count;//左的偏移量
        for (int i = 0; i <offsetLeft ; i++) {
            loop=loop.next;
        }
        //旋转之后的循环链表
        ListNode result=loop.next;
        loop.next=null;
        return result;
    }
}

4.结果截图

image.png

相关文章

  • 【D33】旋转链表 (LC61)

    61. 旋转链表[https://leetcode-cn.com/problems/rotate-list/] 给...

  • LeetCode:61. 旋转链表

    问题链接 61. 旋转链表[https://leetcode-cn.com/problems/rotate-lis...

  • leetcode 链表 [C语言]

    21. 合并两个有序链表 合并两个有序链表 61. 旋转链表 (快慢指针) 61. 旋转链表 相关标签 : 链表 ...

  • 【Leetcode】61.旋转链表

    作者: 码蹄疾毕业于哈尔滨工业大学。 小米广告第三代广告引擎的设计者、开发者;负责小米应用商店、日历、开屏广告业务...

  • [LeetCode]61. 旋转链表

    61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例:输入: 1-...

  • 61.旋转链表(leetcode)

    1、思路 先进行一次遍历获取链表长度,并将链表头尾相接成环;第二次遍历,将遍历的指针指向新的头结点的前一个节点,再...

  • 61. 旋转链表(leetcode)

    给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3-...

  • LeetCode 61.旋转链表

    1.题目 https://leetcode-cn.com/problems/rotate-list/ 2.题解 这...

  • Leetcode 61. 旋转链表

    题目 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 示例 2: C...

  • leetcode 61. 旋转链表

    leetcode[https://leetcode-cn.com/problems/rotate-list/] C++:

网友评论

      本文标题:LeetCode 61.旋转链表

      本文链接:https://www.haomeiwen.com/subject/ahblxctx.html