要找出一個只有進沒有出的城市~題目的設定蠻簡單的, 可以少考慮很多特殊case. 最直覺的想法就是把終點城市拿去全部的起點城市掃一次,如果它在別的row是起點城市,那它就不是最後的唯一終點城市了. 暴力法很快就可以寫出來, 但也是有想說那找過的可以給它mark 起來讓它不用再找了嗎?
看別人的寫法是可以XD 感覺好漂亮XD 屋屋屋為什麼我沒有想到呢~~~(痛哭)
美麗解法就是終點城市一路往後更新,這樣只要一個回圈就可以結束!!!(大神們請受我一拜)
自己的:
char * destCity(char *** paths, int pathsSize, int* pathsColSize){
int i,j;
for (i=0;i< pathsSize;i++)
{
for (j=0; j<pathsSize; j++)
{
if(i==j)
continue;
if (strcmp(paths[j][0],paths[i][1])==0)
break;
}
if (j==pathsSize)
break;
}
return paths[i][1];
}
美麗的移動式指標:
char * destCity(char *** paths, int pathsSize, int* pathsColSize){
int i;
char *target;
target = paths[0][1];
if(pathsSize==1)
return target;
for (i=1;i< pathsSize;i++)
{
if (strcmp(paths[i][0],target)==0)
{
target = paths[i][1];
i=0;
}
}
return target;
}
要注意初始值的設定! 然後看起來速度沒有快多少啊XD 這一定是測資的問題,不然少了一層迴圈怎麼會差不多速度!以上XD
沒有留言:
張貼留言