感覺不難的題目~可是會超過INT大小就很討厭XD
直覺寫起來是這樣, 但是看了一下別人的解法, 其實可以在一個回圈裡做完
就是算分數的時候都順便存這是不是當前的max
如果要更新max 而且index 比較小的話, 就順便更新index
如果是一樣大的max, 因為題目要求要回傳index小的, 所以需要比一下index
但我又懶的寫了XD 先這樣吧~~~~(光速逃)
int edgeScore(int* edges, int edgesSize){
unsigned int* score = calloc (edgesSize, sizeof(unsigned int));
for (int i=0;i< edgesSize; i++)
score[edges[i]]+= i;
int max=0, ret=0;
for (int i=0;i<edgesSize;i++)
{
// printf("score %d %d\n",i, score[i]);
if (score[i]>max)
{
max = score[i];
ret = i;
}
}
return ret;
}
沒有留言:
張貼留言