package com.example.demo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 1436. 旅行终点站
 * 给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i] = [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。
 * <p>
 * 题目数据保证线路图会形成一条不存在循环的线路,因此只会有一个旅行终点站。
 * <p>
 * <p>
 * <p>
 * 示例 1:
 * <p>
 * 输入:paths = [["London","New York"],["New York","Lima"],["Lima","Sao Paulo"]]
 * 输出:"Sao Paulo"
 * 解释:从 "London" 出发,最后抵达终点站 "Sao Paulo" 。本次旅行的路线是 "London" -> "New York" -> "Lima" -> "Sao Paulo" 。
 * 示例 2:
 * <p>
 * 输入:paths = [["B","C"],["D","B"],["C","A"]]
 * 输出:"A"
 * 解释:所有可能的线路是:
 * "D" -> "B" -> "C" -> "A".
 * "B" -> "C" -> "A".
 * "C" -> "A".
 * "A".
 * 显然,旅行终点站是 "A" 。
 * 示例 3:
 * <p>
 * 输入:paths = [["A","Z"]]
 * 输出:"Z"
 * <p>
 * <p>
 * 提示:
 * <p>
 * 1 <= paths.length <= 100
 * paths[i].length == 2
 * 1 <= cityAi.length, cityBi.length <= 10
 * cityAi != cityBi
 * 所有字符串均由大小写英文字母和空格字符组成。
 */
public class Lc1436 {
    //找出终点中不在起点的city,对于每一个list,
    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));
        }
        for (List<String> list : paths) {
            if (map.get(list.get(1)) == null) {
                return list.get(1);
            }
        }
        return null;
    }

    public static void main(String[] args) {
        List<List<String>> lists = new ArrayList<>();

        String[][] strArray = {{"B", "C"}, {"D", "B"}, {"C", "A"}};

        for (int i = 0; i < strArray.length; i++) {
            List<String> tempList = new ArrayList<>();
            for (int j = 0; j < strArray[i].length; j++) {
                tempList.add(strArray[i][j]);
            }
            lists.add(tempList);
        }

        System.out.println(destCity(lists));
        ;
    }
}