码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode -- 61. Rotate List

时间:2019-07-22 15:12:51      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:def   遍历   ++   int   题意   ext   node   link   目的   

技术图片

 

题意及思路

题意:大致是最尾节点(tail)移动到头节点,移动k次。

思路:先遍历一遍链表,得到其长度,用len对k取模(目的是想减少不必要的移动操作,比如一个链表长为3,k为4,其实只需要移动4%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(head==null) return head;
        ListNode p = head,q,top = new ListNode(-1);
        top.next = head;
        int len = 0;
        while(p!=null) {len++; p=p.next;}
        k %= len;
        while(k-->0){
            p = top;
            //找到尾节点前面一个位置
            while(p.next.next!=null) {p=p.next;}
            q = p.next;
            p.next = q.next;
            q.next = top.next;
            top.next = q;
        }
        return top.next;
    }
}

 

LeetCode -- 61. Rotate List

标签:def   遍历   ++   int   题意   ext   node   link   目的   

原文地址:https://www.cnblogs.com/kyrie211/p/11225842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!