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();
        }
    }

    这种方法更好

  • 相关阅读:
    本地部署到服务器并且访问的地址,修改Tomcat服务器端口为80。
    使用流读取文件内容[IO流经典代码]
    SQL语句执行顺序
    集合问题
    同步和异步
    CSS3新特性
    创建表DDL 、增删改DML、DQL查询操作
    Git讲义
    SpringData讲义
    JPA---Java持久层API
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12840405.html
Copyright © 2011-2022 走看看