您的位置:首页 > 其它

leetcode61~Rotate List

2017-03-19 11:01 417 查看
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.

对链表从右侧k个数进行翻转。

注意:k可以大于链表的长度,需要对链表长度取余

public class RotateList {

public ListNode rotateRight(ListNode head, int k) {

if(head==null || k<1) return head;

int count = 1;

ListNode cur = head;

while(cur.next!=null) {

cur = cur.next;

count++;

}

//此时cur指向最后一个节点

ListNode tail = cur;

//k可以大于链表长度

k = k%count;

if(k==0) return head;

int tmp = count - k;

//cur重新指向头节点

cur = head;

while((–tmp)!=0) {

cur =cur.next;

}

//此时cur指向要翻转节点的前一个节点

tail.next = head;

//对head重新赋值

head = cur.next;

cur.next = null;

return head;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: