Hedef Şəhər Leetcode Həlli

Çətinlik səviyyəsi Asan
Tez-tez soruşulur PayPal Vəngilti
alqoritmlər kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions SimBaxılıb 28

Problem Destination City Leetcode Solution bizə şəhərlər arasında bəzi münasibətləri təmin edir. Giriş xətt ayrılmış cüt şəhər şəklində verilir. Girişdəki hər sətir başlanğıc nöqtəsindən son nöqtəyə doğru bir yolu göstərir. Problemdə şəhərlərin dairəvi bir marşrut meydana gətirməməsi verilmişdir. Girişin bir təyinat şəhəri olduğu da bildirilir. Hedef şəhər, gedən bir yolu olmayan bir şəhər olaraq təyin olunur. Beləliklə, həmişəki kimi həll yoluna dalmadan əvvəl bir neçə nümunəyə nəzər salaq.

Hedef Şəhər Leetcode HəlliPin

paths = [["London","New York"],["New York","Lima"],["Lima","Sao Paulo"]]
Sao Paulo

İzahat: Yəni girişdən keçsək, Londonun New York'a birbaşa yolu var. Nyu-Yorkun Limaya birbaşa yolu var. Sonda Lima'nın Sao Pauloya birbaşa yolu var. Beləliklə, gedən yolları olmadığı üçün təyinat şəhəri Sao Paulo olmalıdır.

paths = [["A","Z"]]
Z

İzahat: A-dan Z-yə başlayan tək bir birbaşa yolumuz var. Beləliklə Z bizim təyinat şəhərimizdir.

Hedef şəhər Leetcode həllinə yanaşma

Problem Destination City Leetcode Solution, bizdən gedəcəyi yeri tapmağımızı istədi. Giriş bizə şəhərlər arasında birbaşa yollar təqdim etdi. Bir təyinat şəhərinin gedən bir yolu olmadığı verilir. Problem istifadə edərək asanlıqla həll edilə bilər hashmap. Həşmapdə gedən yolları izləyirik. Yollar vektorunu keçirik və şəhərlərin gedən yollarının sayını artırırıq. Bundan sonra yollar vektoru arasında gedən yolu olmayan bir şəhərin olub olmadığını yoxlayırıq. Cavab olaraq o şəhəri geri qaytarırıq.

Hedef Şəhər Leetcode Həlli Kodu

C ++ kodu

#include <bits/stdc++.h>
using namespace std;

string destCity(vector<vector<string>>& paths) {
    unordered_map<string, int> outdegree;
    for(auto x: paths){
        outdegree[x[0]]++;
    }
    for(auto x: paths)
        if(outdegree[x[0]] == 0)
            return x[0];
        else if(outdegree[x[1]] == 0)
            return x[1];
    return paths[0][0];
}

int main(){
    vector<vector<string>> paths = {{"London","New York"},{"New York","Lima"},{"Lima","Sao Paulo"}};
    string output = destCity(paths);
    cout<<output;
}
Sao Paulo

Java kodu

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
  public static String destCity(List<List<String>> paths) {
        HashMap<String, Integer> outdegree = new HashMap<String, Integer>();
        for(List<String> x: paths)
            if(outdegree.containsKey(x.get(0)))
                outdegree.put(x.get(0), outdegree.get(x.get(1))+1);
            else
               outdegree.put(x.get(0), 1);
        
        for(List<String> x: paths)
               if(!outdegree.containsKey(x.get(0)))
                    return x.get(0);
               else if(!outdegree.containsKey(x.get(1)))
                    return x.get(1);
            
        return paths.get(0).get(0);
    }
    
  public static void main (String[] args) throws java.lang.Exception{
    List<List<String>> paths = new ArrayList<List<String>>();
    paths.add(new ArrayList(Arrays.asList("London","New York")));
    paths.add(new ArrayList(Arrays.asList("New York","Lima")));
    paths.add(new ArrayList(Arrays.asList("Lima","Sao Paulo")));
    System.out.print(destCity(paths));
  }
}
Sao Paulo

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (N), Hashmap istifadə etdiyimiz üçün zaman mürəkkəbliyi xətti olaraq azalır.

Kosmik Mürəkkəblik

O (N), hashmap-də gedən yol sayını saxlamaq üçün yer tələb olunur. Beləliklə, kosmik mürəkkəblik də xətti olur.

Şərh yaz

Translate »
1