2024年1月27日 星期六

[128] Longest Consecutive Sequence

怪怪der ?! 囧
要找出連續數字的最長長度。數字有可能重覆,但是重覆的不會多算長度。
所以就先sorting 完,把重覆的拿掉,再去求解。
但是看起來不符合題目要求的O(n)  XDDDDDD

先貼個第一版!
int comp(void const *a, void const *b)
{
return (*(int*)a - *(int*)b) ;
}

int longestConsecutive(int* nums, int numsSize) {
if (numsSize <=1)
return numsSize;
qsort(nums, numsSize, sizeof(int), comp);
int l=0, r=1;
int max = 1;
int newLen=0;
for (int i=1; i<numsSize; i++)
{
if (nums[i]!=nums[newLen])
nums[++newLen]= nums[i];
}

numsSize = newLen+1;
for (int i=l; i<numsSize && r < numsSize; i++, r++)
{
if (nums[r]- nums[i]!=1)
{
if ((r-l) > max)
max = (r-l);
l=r;
}
}

if ((r-l) > max)
max = (r-l);
return max;
}

然後???
發現討論區裡面的 C 也通通都開qsort 下去啊  XD!!!
那就這樣好了= =+

沒有留言:

張貼留言