61. 旋转链表
給定一個鏈表,旋轉鏈表,將鏈表每個節點向右移動?k?個位置,其中?k?是非負數。
示例?1:
輸入: 1->2->3->4->5->NULL, k = 2
輸出: 4->5->1->2->3->NULL
解釋:
向右旋轉 1 步: 5->1->2->3->4->NULL
向右旋轉 2 步: 4->5->1->2->3->NULL
示例?2:
輸入: 0->1->2->NULL, k = 4
輸出: 2->0->1->NULL
解釋:
向右旋轉 1 步: 2->0->1->NULL
向右旋轉 2 步: 1->2->0->NULL
向右旋轉 3 步:?0->1->2->NULL
向右旋轉 4 步:?2->0->1->NULL
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/rotate-list
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
?
解法:
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode* rotateRight(ListNode* head, int k) {if(head == NULL) return NULL; ListNode *p = head;int len = 0;while(p){++len;p = p->next;}k = k % len;ListNode *fast = head, *slow = head;while(k--)fast = fast->next;while(fast->next){fast = fast->next;slow = slow->next;}fast->next = head;head = slow->next;slow->next = NULL;return head;} };?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: LOL卡兹克还能不能玩?打中路还能行吗?
- 下一篇: 在成都欢乐谷耍一天要好多钱