වාහන නැවැත්වීමේ පද්ධතිය ලීට්කෝඩ් විසඳුම


දුෂ්කරතා මට්ටම පහසු
නිතර අසනු ලැබේ ඇමේසන්
නිර්මාණ

ගැටළු ප්රකාශය

මෙම ගැටලුවේදී අපට වාහන නැවැත්වීමේ ස්ථානයක් සැලසුම් කළ යුතුය. අපට වාහන නැවැත්වීමේ ඉඩ වර්ග 3 ක් ඇත (විශාල, මධ්‍යම හා කුඩා). මෙම සියලු වාහන නැවැත්වීමේ අවකාශයන්හි මුලින් යම් නිශ්චිත හිස් සංඛ්‍යාවක් ඇත.
විශාල වර්ගයේ අවකාශයක මෙන්, අපට බොහෝ විට කාර් කාර් ස්ථානගත කළ හැකිය. කුඩා වර්ගයේ අවකාශයක, අපට බොහෝ මෝටර් රථවල තැබිය හැකි අතර මධ්‍යම ප්‍රමාණයේ අවකාශයේ අපට m කාර් තැබිය හැකිය.

ලබා දී ඇති පන්තියේ ඉදිකිරීම්කරු තුළ අපට b, s සහ m (අවකාශ තුනේ උපරිම සීමාව) අගයන් ලබා දී ඇත. දැන්, අපට මෙම අවකාශයන්හි කාර් කිහිපයක් තැබිය යුතුය. මෝටර් රථ ද කුඩා හා මධ්‍යම වශයෙන් වර්ග තුනකින් යුක්ත වේ. ඒවා තැබිය හැක්කේ ඔවුන්ගේ වාහන නැවැත්වීමේ ස්ථානයට පමණි. කුඩා මෝටර් රථයක් තැබිය හැක්කේ කුඩා වාහන නැවැත්වීමේ ස්ථානයක පමණි.

අපට මෙම මෝටර් රථ තැබිය හැකිද නැද්ද යන්න සොයා බැලිය යුතුය. මෙම අරමුණු සඳහා අප විසින් addCar (int type) ශ්‍රිතයක් නිර්මාණය කළ යුතු අතර එය මෙම වර්ගයේ මෝටර් රථය තැබිය හැකි නම් සත්‍ය බවට පත්වේ.

වාහන නැවැත්වීමේ පද්ධතිය ලීට්කෝඩ් විසඳුම

උදාහරණයක්

["ParkingSystem", "addCar", "addCar", "addCar", "addCar"]
[[1, 1, 0], [1], [2], [3], [1]]
[null, true, true, false, false]

පැහැදිලි කිරීම:

1. parkingSystem.addCar (1); // විශාල මෝටර් රථයක් සඳහා ලබා ගත හැකි ස්ථාන 1 ක් ඇති බැවින් සත්‍යය වෙත ආපසු යන්න
2. parkingSystem.addCar (2); // මධ්‍යම මෝටර් රථයක් සඳහා ලබා ගත හැකි ස්ථාන 1 ක් ඇති බැවින් සත්‍යය වෙත ආපසු යන්න
3. parkingSystem.addCar (3); // කුඩා මෝටර් රථයක් සඳහා ස්ලට් එකක් නොමැති නිසා වැරදි ලෙස ආපසු එවන්න
4. parkingSystem.addCar (1); // විශාල මෝටර් රථයක් සඳහා ස්ලට් එකක් නොමැති නිසා වැරදි ලෙස ආපසු එවන්න. එය දැනටමත් වාඩිලාගෙන ඇත.

ප්රවේශය

අපි මෙහි කාර්යයන් දෙකක් කළ යුතුයි. එකක් නම් ලබා දී ඇති අගයන් භාවිතා කිරීමයි සාදන්නා. තවත් දෙයක් නම් addCar () ශ්‍රිතය නිර්මාණය කිරීමයි.
දැන් සිතන්න, අපට විශාල වාහන නැවැත්වීමේ ස්ථානයක හිස් ඉඩක් තිබේ නම් සහ අපට මේ සඳහා විශාල මෝටර් රථයක් තැබිය යුතුය. සරලවම, අපි මෙම මෝටර් රථය තබන අතර අපගේ හිස් අවකාශය b-1 දක්වා පහත වැටේ.
අපට විශාල මෝටර් රථ සඳහා හිස් ඉඩක් නොමැති නම් කුමක් කළ යුතුද? එනම් b = 0 වන විට අපට විශාල මෝටර් රථයක් තැබිය නොහැක.

අපගේ ප්‍රවේශය ද එසේමය. එක් එක් වාහන නැවැත්වීමේ ස්ථානවල හිස් අවකාශ ගණන පෙන්වීම සඳහා, අපි ලබා දී ඇති පන්තියේ ගෝලීය විචල්‍යයන් තුනක් නිර්මාණය කර ඇත්තෙමු (විශාල, කුඩා හා මධ්‍යම ඉඩ දෙන්න). අපි ඒවායේ අගයන් ආරම්භ කරන්නේ ඉදිකිරීම්කරුගේ අගයන් සමඟ ය.
දැන් අපට addCar () ඉල්ලීම ක්‍රියාවට නැංවිය හැකිය.

කාර් ටයිප් වර්ගයේ මෝටර් රථයක් පැමිණෙන සෑම විටම, අපි අදාළ වාහන නැවැත්වීමේ ස්ථානයේ ඇති ඉඩ ප්‍රමාණය කොපමණ දැයි පරීක්ෂා කරන්නෙමු. අවකාශ ගණන 0 නම්, අපට මෙම මෝටර් රථය තැබිය නොහැක. එබැවින් අපි බොරු නැවත ලබා දෙන්නෙමු. නැතහොත් අපි මෙම මෝටර් රථය ස්ථානගත කර එම වර්ගයේ ඉඩ ප්‍රමාණය 1 කින් අඩු කර සත්‍ය බවට පත්වෙමු.

ක්රියාත්මක කිරීම

සැලසුම් නැවැත්වීමේ පද්ධති ලීට්කෝඩ් විසඳුම සඳහා සී ++ වැඩසටහන

#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

සැලසුම් නැවැත්වීමේ පද්ධති ලීට්කෝඩ් විසඳුම සඳහා ජාවා වැඩසටහන

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

සැලසුම් නැවැත්වීමේ පද්ධති ලීට්කෝඩ් විසඳුම සඳහා සංකීර්ණ විශ්ලේෂණය

කාල සංකීර්ණත්වය

ඕ (1): ඇල්ගොරිතම වෙනත් කාර්යයන් නම් සරල ය. මේ අනුව කාල සංකීර්ණතාව O (1) වේ.

අභ්‍යවකාශ සංකීර්ණතාව 

ඕ (1): අමතර ඉඩක් භාවිතා නොකෙරේ.