61. Rotate List(旋转链表)

题目链接:https://leetcode.com/problems/rotate-list/

思路就是把该链表组成一个环,同时计算出链表的长度length。

然后用k=k%length,算出k到链表结尾都多长,然后从链表头

走(length-k)个节点的距离,最后断链,返回的就是要求的节点。

AC 6ms 100% Java:

/**
 * 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||k==0)
            return head;
        ListNode p=head;
        int length=0;
        while(p.next!=null){
            length++;
            p=p.next;
        }
        length++;
        p.next=head;
        k=k%length;
        int count=length-k-1;
        p=head;
        while(count!=0){
            count--;
            p=p.next;
        }
        ListNode temp=p;
        p=p.next;
        temp.next=null;
        return p;
    }
}

猜你喜欢

转载自blog.csdn.net/God_Mood/article/details/88180768