Re: [閒聊] 每日leetcode

作者: JIWP (JIWP)   2024-03-07 18:39:29
61. Rotate List
有一個link list,請把這個link list向右轉k次
回傳旋傳後的link list
思路:
先計算這個link list有幾個node,假設有n個
向右旋轉k次代表倒數第(k%n)個node會變成head
如果k%n==0,那旋轉後的link list會跟原本的一樣
記得要把倒數第(k%n)+1個node的下一個節點設成NULL
c code :
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* rotateRight(struct ListNode* head, int k) {
if (!head){
return head;
}
int cnt=1,n=0;
struct ListNode* temp=head;
while (temp->next){
temp=temp->next;
cnt++;
}
n=k%cnt;
if (n==0){
return head;
}
temp->next=head;
temp=head;
//倒數第n個node是rotate後的第一個
//所以要把倒數第n+1 node.Next=nil
for (int i=0;i<cnt-n-1;i++){
temp=temp->next;
}
head=temp->next;
temp->next=NULL;
return head;
}
作者: DJYOSHITAKA (Evans)   2024-03-07 18:40:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com