美文网首页
LeetCode61. Rotate List

LeetCode61. Rotate List

作者: 24K纯帅豆 | 来源:发表于2019-06-04 15:45 被阅读0次

    1、题目链接

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

    2、解题思路

    这道题的意思是说给你一个链表head,然后再给你一个非负整数k,要求让你将这个链表的倒数k个元素旋转放到表头位置,就好比hea=1->2->3->4->5->NULL,k=2,旋转之后head=4->5->1->2->3->NULL;我刚开始的想法是先将链表截断,然后再拼接起来,发现这样比较费事,然后我想着是不是可以把这个链表弄成一个环形的,直接把表尾链接到表头部,然后在计算截断的位置就好了,截断的话直接将listNode.next置空即可。

    3、代码

    • Java
    public ListNode rotateRight(ListNode head, int k) {
        if (null == head || null == head.next || k == 0) {
            return head;
        }
        int length = 0;
        ListNode listNode = head;
        while (null != listNode) {
            length++;
            listNode = listNode.next;
        }
        listNode = head;
        while (null != listNode.next) {
            listNode = listNode.next;
        }
        listNode.next = head;
        int cnt = length - k % length;  //注意可能会比链表长度大
        ListNode listNode1 = listNode;
        while (cnt > 0) {
            listNode1 = listNode1.next;
            cnt--;
        }
        ListNode listNode2 = listNode1.next;
        listNode1.next = null;
        return listNode2;
    }
    

    4、提交结果

    VtUZGT.md.png

    相关文章

      网友评论

          本文标题:LeetCode61. Rotate List

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