2022年6月6日 星期一

[1436] Destination City

要找出一個只有進沒有出的城市~題目的設定蠻簡單的, 可以少考慮很多特殊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

沒有留言:

張貼留言