1436. 旅行终点站『简单』

题目来源于力扣(LeetCode

一、题目

1436. 旅行终点站

题目相关标签:字符串

提示:

  • 1 <= paths.length <= 100
  • paths[i].length == 2
  • 1 <= cityAi.length, cityBi.length <= 10
  • cityAi != cityBi
  • 所有字符串均由大小写英文字母和空格字符组成。

二、解题思路

  1. 据题解可知:旅行终点站即是没有任何指向的字符串

  2. 遍历 paths 列表,因列表中的嵌套列表仅有两个元素,则使用 map 来记录字符串,索引 0 上的元素为键,索引 1 上的元素为值

  3. 查找 map,找到键映射为空的字符串,没有值即是没有下一个旅行点,即终点站

三、代码实现

public static String destCity(List<List<String>> paths) {
    Map<String, String> map = new HashMap<>();
    for (List<String> list : paths) {
        // 键为起点,值为终点
        map.put(list.get(0), list.get(1));
    }
    // 初始查找值为 paths 的第一个列表的第一个元素
    String str = paths.get(0).get(0);
    // 该字符串找不到对应的值时,说明为终点
    while (map.containsKey(str)) {
        // 每次更新查找的键,map 值即为下一个旅行站的起点
        str = map.get(str);
    }
    return str;
}

四、执行用时

五、部分测试用例

public static void main(String[] args) {
    List<List<String>> paths = new ArrayList<>();
    List<String> list = new ArrayList<>();
    list.add("London");
    list.add("New York");
    paths.add(list);

    list.add("New York");
    list.add("Lima");
    paths.add(list);

    list.add("Lima");
    list.add("Sao Paulo");
    paths.add(list);  // output:"Sao Paulo"
    
    String result = destCity(paths);
    System.out.println(result);
}
posted @ 2020-05-31 18:25  知音12138  阅读(172)  评论(0编辑  收藏  举报