zoukankan      html  css  js  c++  java
  • 61. Rotate List

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

    For example:
    Given 1->2->3->4->5->NULL and k = 2,
    return 4->5->1->2->3->NULL.

     此题先想需要多少个ListNode,dummy,用于返回。fast,slow。三个就够了,我开始做的时候,多用了一个cur来计算链表长度,我的原始代码如下:

    /**

     * Definition for singly-linked list.

     * public class ListNode {

     *     int val;

     *     ListNode next;

     *     ListNode(int x) { val = x; }

     * }

     */

    public class Solution {

        public ListNode rotateRight(ListNode head, int k) {

            ListNode slow = head;

            ListNode fast = head;

            ListNode cur = head;

            ListNode dummy = new ListNode(0);

            if(head==null) return head;

            int len = 0;

            while(cur!=null){

                cur=cur.next;

                len++;

            }

            k = k%len;

            if(k==0) return head;

            while(k>0){

                fast = fast.next;

                k--;

            }

            while(fast!=null&&fast.next!=null){

                fast = fast.next;

                slow = slow.next;

            }

            fast.next = head;

            dummy.next = slow.next;

            slow.next = null;

            return dummy.next;

        }

    }

    看了答案以后,发现答案的方法很简明,答案代码如下:

     

    /**

     * Definition for singly-linked list.

     * public class ListNode {

     *     int val;

     *     ListNode next;

     *     ListNode(int x) { val = x; }

     * }

     */

    public class Solution {

        public ListNode rotateRight(ListNode head, int k) {

            ListNode dummy = new ListNode(0);

            ListNode slow = dummy;

            ListNode fast = dummy;

            dummy.next = head;

            if(head==null||head.next==null) return head;

            int len = 0;

            while(fast.next!=null){

                fast = fast.next;

                len++;

            }

            k = k%len;

            while(len-k>0){

                slow = slow.next;

                len--;

            }

            fast.next = dummy.next;

            dummy.next = slow.next;

            slow.next = null;

            return dummy.next;

        }

    }

     
     
  • 相关阅读:
    linux docker常用命令
    angular input输入框自动消除前后空格
    angular 一览数据全选符合条件数据
    linux MySQL出现错误的一些常见解决办法
    linux crontab定时任务一些命令
    Linux下定时访问指定url地址
    直接打印对象的结果
    java中变量的作用域
    请求转发后地址栏显示传入的值,页面不显示的原因
    String不是基本数据类型,但是
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6363909.html
Copyright © 2011-2022 走看看