public static ListNode rotateRight(ListNode head, int k) {
if(head == null || k <= 0) {
return head;
}
ListNode prep = null, pre = null, cur = head, lastcur = null,cop = head;
int len =0;
while(cop != null) {
len++;
cop = cop.next;
}
int count = 0;
k = k % len;
while(cur != null) {
count++;
if(pre !=null) {
pre = pre.next;
}
if(prep != null) {
prep = prep.next;
}
if(count == k) {
pre = head;
}else if(count == k+1) {
prep = head;
}
if(cur.next == null) {
lastcur = cur;
}
cur = cur.next;
}
if(prep == null && pre == null) {
ListNode curnode = head,nextnode = head.next, nextp = null;
head.next = null;
while(nextnode != null) {
nextp = nextnode.next;
nextnode.next = curnode;
curnode = nextnode;
nextnode = nextp;
}
head = curnode;
}else if(prep != null && pre != null){
lastcur.next = head;
head = pre;
prep.next = null;
}
return head;
}
61. Rotate List
最新推荐文章于 2024-07-10 11:26:09 发布