2023年9月23日 星期六

[436] Find Right Interval (TBD)

看起來是需要一個binary search ?!
有空再寫好了XD

比較理想的作法應該是新創一個data structure 去存value 跟index , 降子就可以先對它做qsort (吧)不過竟然沒什麼bug的pass了,覺得愉悅  XDDDDD!!!! 
(我就說我有進步!!!哼XD)

/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* findRightInterval(int** intervals, int intervalsSize, int* intervalsColSize, int* returnSize){
int *hash = calloc (2000000+1 , sizeof(int));
for (int i=0;i<2000001;i++)
hash[i]= -1;
int max = INT_MIN;
for (int i=0;i<intervalsSize; i++)
{
int idx = intervals[i][0] + 1000000;
hash[idx]= i;
if (idx > max)
max = idx;
}
*returnSize = intervalsSize;
*intervalsColSize = 2;
int *ret = calloc (intervalsSize, sizeof (int));
//printf("max = %d\n", max);
for (int i=0;i<intervalsSize; i++)
{
ret[i] = -1;
if (intervals[i][1] > max)
continue;
else
{
int idx = intervals[i][1]+1000000;
for (int j=idx; j <= max; j++)
{
if (hash[j]>=0)
{
ret[i]=hash[j];
break;
}
}
}
}
return ret;
}

沒有留言:

張貼留言