LeetCode - 1349 - 旅行終點站

lemon_lyue發表於2020-07-06

題目

給你一份旅遊線路圖,該線路圖中的旅行線路用陣列 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示該線路將會從 cityAi 直接前往 cityBi 。請你找出這次旅行的終點站,即沒有任何可以通往其他城市的線路的城市。

題目資料保證線路圖會形成一條不存在迴圈的線路,因此只會有一個旅行終點站。

示例 1

輸入:paths = [[“London”,”New York”],[“New York”,”Lima”],[“Lima”,”Sao Paulo”]]

輸出:“Sao Paulo”

解釋:

從 “London” 出發,最後抵達終點站 “Sao Paulo” 。本次旅行的路線是 “London” -> “New York” -> “Lima” -> “Sao Paulo” 。

示例 2

輸入:paths = [[“B”,”C”],[“D”,”B”],[“C”,”A”]]

輸出:“A”

解釋:

所有可能的線路是:

“D” -> “B” -> “C” -> “A”.

“B” -> “C” -> “A”.

“C” -> “A”.

“A”.

顯然,旅行終點站是 “A” 。

示例 3

輸入:paths = [[“A”,”Z”]]

輸出:“Z”

解題

LeetCode給定函式體


class Solution {

    /**

     * @param String[][] $paths

     * @return String

     */

    function destCity($paths) {

    }

}

思路

終點就是不會作為起點,所以拆成兩個陣列(起點陣列和終點陣列),遍歷終點陣列,如果終點陣列中某個元素不在起點陣列內,則該地點就是最終的終點


class Solution {

    /**

     * @param String[][] $paths

     * @return String

     */

    function destCity($paths) {

        $start = [];

        $end = [];

        // 拆分為兩個陣列,獲取起點和終點

        foreach ($paths as $item) {

            $start[] = $item[0];

            $end[] = $item[1];

        }

        /**

         * @desc PHP內建獲取陣列某一列

         */

        // $start = array_column($paths, 0);

        // $end = array_column($paths, 1);

        foreach ($end as $item) {

            // 判斷終點是否存在於起點,存在則不是最終的終點

            if (!in_array($item, $start)) {

                return $item;

            }

        }

    }

}

結果

LeetCode - 1349 - 旅行終點站

本作品採用《CC 協議》,轉載必須註明作者和本文連結

lemon_lyue

相關文章