2022年11月20日 星期日

[229] Majority Element II

感覺還是卡卡的!!!而且初始值的部分總是沒考慮好>< 
最後corner case 就掛了!
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* majorityElement(int* nums, int numsSize, int* returnSize){
if (numsSize <2)
{
*returnSize=numsSize;
return nums;
}
int cnt1=0,cnt2=0;
int n1=-1, n2=-1;
for (int i=0;i<numsSize;i++)
{
if (n1== nums[i])
cnt1++;
else if (n2==nums[i])
cnt2++;
else if (cnt1==0)
{
n1=nums[i];
cnt1++;
}
else if (cnt2==0)
{
n2=nums[i];
cnt2++;
}
else
{
cnt1--;
cnt2--;
}
}
cnt1=0;
cnt2=0;
for (int i=0; i<numsSize; i++)
{
if (nums[i]==n1)
cnt1++;
else if (nums[i]==n2)
cnt2++;
}
int* ret = calloc(2,sizeof(int));
*returnSize= 0;
if (cnt1>numsSize/3)
{
ret[(*returnSize)++]=n1;
}
if (cnt2>numsSize/3)
{
ret[(*returnSize)++]=n2;
}

return ret;
}

沒有留言:

張貼留言