zoukankan      html  css  js  c++  java
  • 1436. Destination City

    You are given the array paths, where paths[i] = [cityAi, cityBi] means there exists a direct path going from cityAi to cityBiReturn the destination city, that is, the city without any path outgoing to another city.

    It is guaranteed that the graph of paths forms a line without any loop, therefore, there will be exactly one destination city.

    Example 1:

    Input: paths = [["London","New York"],["New York","Lima"],["Lima","Sao Paulo"]]
    Output: "Sao Paulo" 
    Explanation: Starting at "London" city you will reach "Sao Paulo" city which is the destination city. Your trip consist of: "London" -> "New York" -> "Lima" -> "Sao Paulo".
    

    Example 2:

    Input: paths = [["B","C"],["D","B"],["C","A"]]
    Output: "A"
    Explanation: All possible trips are: 
    "D" -> "B" -> "C" -> "A". 
    "B" -> "C" -> "A". 
    "C" -> "A". 
    "A". 
    Clearly the destination city is "A".
    

    Example 3:

    Input: paths = [["A","Z"]]
    Output: "Z"
    

    Constraints:

    • 1 <= paths.length <= 100
    • paths[i].length == 2
    • 1 <= cityAi.length, cityBi.length <= 10
    • cityAi != cityBi
    • All strings consist of lowercase and uppercase English letters and the space character.
    class Solution {
        public String destCity(List<List<String>> paths) {
            List<String> list = new ArrayList();
            for(int i = 0; i < paths.size(); i++){
                if(!list.contains(paths.get(i).get(1))) list.add(paths.get(i).get(1));
                else list.remove(paths.get(i).get(1));
            }
            for(int i = 0; i < paths.size(); i++){
                if(list.contains(paths.get(i).get(0))) list.remove(paths.get(i).get(0));
            }
            return list.get(0);
        }
    }

    观察,得到特征:所有destination都出现一次且只出现在list的第二位,第一遍把独特的list第二个city找出来,第二遍遍历把独一无二的找出来就可以了

    class Solution {
        public String destCity(List<List<String>> paths) {
            Set<String> set= new HashSet<>();
            for (List<String> l: paths) set.add(l.get(1));
            for (List<String> l: paths) set.remove(l.get(0));
            return set.iterator().next();
        }
    }

    这种方法更好

  • 相关阅读:
    用友 t6 凭证http API
    vue 解决 跳转外部地址携带根路径问题
    JavaScript之assign()——对象浅拷贝 (ES6)
    JavaScript之splice 添加或删除元素
    JavaScript之“==”和“===”
    C#——获取阶乘(递归、循环)
    C#——简单的表示两个数中的(三目运算)
    JavaScript 字符串之截取字符串 ——(substring、substr、slice)
    JavaScrpit之Json实现深拷贝
    Vue之this.$forceUpdate——强制更新数据
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12840405.html
Copyright © 2011-2022 走看看