首页 > 代码库 > LeetCode-Rotate List
LeetCode-Rotate List
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 = k%len; 再仿照last-slow的思想,先让p指针走K步,然后q再开始走,当p->next为null时,q为旋转位。
1 * Definition for singly-linked list. 2 * struct ListNode { 3 * int val; 4 * ListNode *next; 5 * ListNode(int x) : val(x), next(NULL) {} 6 * }; 7 */ 8 class Solution { 9 public:10 ListNode *rotateRight(ListNode *head, int k) {11 12 if(k == 0 || !head)13 return head;14 ListNode *p=head, *q=head;15 ListNode *l=head;16 //模长度,求旋转步长17 int len = 0;18 while(l!=NULL){19 l = l->next;20 len++;21 }22 k = k>len ? k%len : k;23 //p先走K步,q再开始走24 while(--k >= 0 && p != NULL){25 p = p->next;26 }27 28 if( p == NULL )29 return head;30 31 while(p->next!=NULL){32 q = q->next;33 p = p->next;34 }35 36 p->next = head;37 head = q->next;38 q->next = NULL;39 40 return head;41 }42 };
LeetCode-Rotate List
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。