【leetcode】61. (Medium) Rotate List

解题思路:
就是修改一下链表结点之间的连接关系
刚开始耗时快300ms…因为要求k相对链表长度的绝对大小的时候我是这么写的:

while(k>=len) k-=len;

其实直接k%=len; 就可以了,把这里改过来就不会耗时太久了


提交代码:

 class Solution{
	 public ListNode rotateRight(ListNode head, int k) {
		 if(head==null||head.next==null||k==0)	return head;
		 
		 int len=1;
	    ListNode p1=head;
	    	
	    // find the length of the list
	    while(p1.next!=null) {
	    	len++;
	    	p1=p1.next;
	    }
		 
	    k%=len;
	    if(k==0)	return head;
	    
		p1=head;
		for(int i=0;i<len-k-1;i++)
    		p1=p1.next;
	    
	    ListNode ans=p1.next;
	    p1.next=null;
	    p1=ans;
	    
	    for(int i=1;i<k;i++)
	    	p1=p1.next;
	    p1.next=head;
	    
	    return ans;
	 }
 }
 

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AXIMI/article/details/84301668