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