2023年7月21日 星期五

[817] Linked List Components

寫完的速度好慢!!! WHY!!! XD

跟別人的寫法比對半天,還以為在while 裡面用一個bool 去判斷的if else 會讓它變很慢
結果後來根本是array 初始值的用法的問題!!!
原本想先算一次linked list的長度,但可以省掉一次迴圈是一次(吧)
而最早想用calloc 把值都設零,沒想到它很慢?!
因為數字範圍是 10000還不算太大,所以就
int count [10000] = {0} ;
最快!!!
唉浪費我一堆時間QQ

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
int numComponents(struct ListNode* head, int* nums, int numsSize){
struct ListNode* ptr=head;
int count[10000]={0};
for (int i=0;i<numsSize;i++)
count[nums[i]]++;

bool connected=false;
int c_count=0;
ptr=head;
while(ptr !=NULL)
{
if ((!connected) && count[ptr->val]>0)
{
c_count++;
connected= true;
}
else if (connected && count[ptr->val]==0)
connected=false;

ptr=ptr->next;
}

return c_count;
}

沒有留言:

張貼留言