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;

        }

    }

     
     
  • 相关阅读:
    [函數] Firemonkey Android 取得系统参数设定的字型大小
    [示例] 访问类的私有属性
    [修正] 移动平台曲线不平滑的问题(如:TRectangle, TPath...等)
    [修正] Firemonkey TSelection 控件等比缩放时,左下角拉动问题
    [修正] iOS 10 使用相机及相簿闪退的问题修正
    报表之表头
    报表字段刷新
    tfs解除锁
    sql server中排名的问题
    TFS查询无法在Excel中打开
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6363909.html
Copyright © 2011-2022 走看看