Mündəricat
Problem bəyanat
Bu problemdə bir park yeri dizayn etməliyik. 3 növ park yerimiz var (böyük, orta və kiçik). Bütün bu park yerlərində əvvəlcə müəyyən sayda boş yuva var.
Eynən, böyük bir məkanda ən çox b avtomobil yerləşdirə bilərik. Kiçik bir məkanda ən çox avtomobil yerləşdirə bilərik və orta məkanda m maşın yerləşdirə bilərik.
Verilən sinifin konstruktorunda b, s və m dəyərləri (hər üç boşluğun maksimum həddi) verilir. İndi bəzi maşınları bu yerlərə yerləşdirməliyik. Avtomobillər də kiçik və orta üç növdür. Və bunlar yalnız öz avtoparklarına yerləşdirilə bilər. Kiçik avtomobil kimi yalnız kiçik park yerində yerləşdirmək olar.
Bu avtomobilləri yerləşdirə biləcəyimizi və ya etməməyimizi öyrənməliyik. Bunun üçün addCar (int type) funksiyası yaratmalıyıq ki, bu tip avtomobil yerləşdirilə bilsə geriyə qayıtsın, əks halda yalan qayıtsın.
misal
["ParkingSystem", "addCar", "addCar", "addCar", "addCar"] [[1, 1, 0], [1], [2], [3], [1]]
[null, true, true, false, false]
Explanation:
1. parkingSystem.addCar (1); // böyük bir avtomobil üçün 1 mövcud yuva olduğu üçün doğru qayıdın
2. parkingSystem.addCar (2); // orta səviyyəli bir avtomobil üçün 1 mövcud yuva olduğu üçün doğru qayıdın
3. parkingSystem.addCar (3); // kiçik bir avtomobil üçün boş yer olmadığına görə false qayıdın
4. parkingSystem.addCar (1); // böyük bir avtomobil üçün mövcud yuva olmadığına görə false qayıdın. Artıq işğal altındadır.
Yanaşma
Burada iki tapşırıq etməliyik. Bunlardan biri verilənlərə verilən dəyərlərdən istifadə etməkdir konstruktor. Başqa bir funksiya addCar () yaratmaqdır.
İndi düşünün ki, böyük bir dayanacağın boş yerimiz varsa və buna böyük bir maşın yerləşdirməliyik. Sadəcə, bu maşını yerləşdirəcəyik və boş yerimiz b-1-ə enir.
Böyük maşınlar üçün boş yerimiz yoxdursa nə olar? yəni b = 0 olduqda heç bir böyük maşın yerləşdirə bilmərik.
Bizim yanaşmamız da eyni şeyi edir. Hər dayanacaq boşluğunun sayını göstərmək üçün verilmiş sinifdə üç qlobal dəyişən yaratdıq (böyük, kiçik və orta olsun). Dəyərlərini konstruktorda verilmiş dəyərlərlə başlatırıq.
İndi addCar () tələbini işləyə bilərik.
Nə vaxt bir carType tipli bir avtomobil gəlsə, müvafiq dayanacaqdakı boşluqların sayını yoxlayacağıq. Boşluq sayı 0 olardısa, bu maşını yerləşdirə bilmərik. Beləliklə yalançı qayıdacağıq. Əks təqdirdə bu avtomobili yerləşdirəcəyik və bu tip yer sayını 1 azaldaraq gerçəkliyə dönəcəyik.
Həyata keçirilməsi
Layihə Park Sistemi Leetcode Həlli üçün C ++ Proqramı
#include<iostream> using namespace std; class ParkingSystem { public: int big,medium,small; ParkingSystem(int big1, int medium1, int small1) { big=big1; medium=medium1; small=small1; } bool addCar(int carType) { if(carType==1){ if(big==0)return false; big--; }else if(carType==2){ if(medium==0)return false; medium--; }else{ if(small==0)return false; small--; } return true; } }; int main() { ParkingSystem obj = ParkingSystem(1,1,0); obj.addCar(1)?cout<<"true ":cout<<"false "; obj.addCar(2)?cout<<"true ":cout<<"false "; obj.addCar(3)?cout<<"true ":cout<<"false "; obj.addCar(1)?cout<<"true ":cout<<"false "; return 0; }
true true false false
Dizayn Park Sistemi Leetcode Həlli üçün Java Proqramı
import java.util.*; import java.lang.*; class ParkingSystem { int big,medium,small; public ParkingSystem(int big, int medium, int small) { this.big=big; this.medium=medium; this.small=small; } public boolean addCar(int carType) { if(carType==1){ if(big==0)return false; big--; }else if(carType==2){ if(medium==0)return false; medium--; }else{ if(small==0)return false; small--; } return true; } } class Solution { public static void main(String args[]) { ParkingSystem obj=new ParkingSystem(1,1,0); System.out.print(obj.addCar(1)+" "); System.out.print(obj.addCar(2)+" "); System.out.print(obj.addCar(3)+" "); System.out.print(obj.addCar(1)+" "); } }
true true false false
Dizayn Park Sistemi Leetcode Solution üçün Mürəkkəblik Analizi
Zamanın mürəkkəbliyi
O (1): Alqoritmin sadə və ya başqa tapşırıqları var. Beləliklə zamanın mürəkkəbliyi O (1) -dir.
Kosmik Mürəkkəblik
O (1): əlavə yer istifadə edilmir.