61. 旋转链表
給定一個(gè)鏈表,旋轉(zhuǎn)鏈表,將鏈表每個(gè)節(jié)點(diǎn)向右移動(dòng)?k?個(gè)位置,其中?k?是非負(fù)數(shù)。
示例?1:
輸入: 1->2->3->4->5->NULL, k = 2
輸出: 4->5->1->2->3->NULL
解釋:
向右旋轉(zhuǎn) 1 步: 5->1->2->3->4->NULL
向右旋轉(zhuǎn) 2 步: 4->5->1->2->3->NULL
示例?2:
輸入: 0->1->2->NULL, k = 4
輸出: 2->0->1->NULL
解釋:
向右旋轉(zhuǎn) 1 步: 2->0->1->NULL
向右旋轉(zhuǎn) 2 步: 1->2->0->NULL
向右旋轉(zhuǎn) 3 步:?0->1->2->NULL
向右旋轉(zhuǎn) 4 步:?2->0->1->NULL
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/rotate-list
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
?
解法:
/*** 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;} };?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: LOL卡兹克还能不能玩?打中路还能行吗?
- 下一篇: 2. 二叉树的深度