LeetCode - 1436 - 旅行终点站

更多内容关注个人博客:lemonlyue.github.io/

题目

给你一份旅游线路图,该线路图中的旅行线路用数组 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
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!