1436. Destination City
You are given the array paths, where paths[i] = [cityAi, cityBi] means there exists a direct path going from cityAi to cityBi. Return 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 <= 100paths[i].length == 21 <= cityAi.length, cityBi.length <= 10cityAi != 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(); } }
这种方法更好

浙公网安备 33010602011771号