前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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
.
public class Solution {
public ListNode rotateRight(ListNode head, int k) {
if(head == null) return head;
if(k == 0)return head;
ListNode firstNode = head,lastNode = head,searchNode = head;
int n = 0;
while(searchNode!=null){
lastNode = searchNode;
searchNode = searchNode.next;
n++;
}
k = k%n;
if( k != 0){
searchNode = head;
int counter = n - 1 - k;
while(counter > 0){
searchNode = searchNode.next;
counter --;
}
head = searchNode.next;
lastNode.next = firstNode;
searchNode.next = null;
}
return head;
}
}