උපරිම 69 අංක ලීට්කෝඩ් විසඳුම


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

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

මෙම ගැටළුවේදී, අපට 6 හෝ 9 ඉලක්කම් වලින් සෑදී ඇති අංකයක් ලබා දී ඇත. අපට මෙම අංකයේ ඉලක්කම් වලින් එකක් ආදේශ කර මෙය වෙනත් අංකයකට වෙනස් කළ හැකිය. එනම් අපට 6 සිට 9 දක්වා ආදේශ කළ හැකිය, නැතහොත් 9 සිට 6 දක්වා ආදේශ කළ හැකිය. අපට එක් ප්‍රතිස්ථාපනයකින් ලබා ගත හැකි උපරිම සංඛ්‍යාව ප්‍රතිදානය කළ යුතුය.

උදාහරණයක්

num = 9669
9969

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

පළමු ඉලක්කම් වෙනස් කිරීමෙන් 6669 ප්‍රති results ල ලැබේ.
දෙවන ඉලක්කම් වෙනස් කිරීමෙන් 9969 ප්‍රති results ල ලැබේ.
එලෙසම තුන්වන ඉලක්කම් වෙනස් කිරීමෙන් 9699 ප්‍රති results ල ලැබේ.
සිව්වන ඉලක්කම් වෙනස් කිරීමෙන් 9666 ප්‍රති results ල ලැබේ.
උපරිම අංකය 9969 කි.

9996
9999

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

අවසාන ඉලක්කම් 6 සිට 9 දක්වා වෙනස් කිරීමෙන් උපරිම සංඛ්‍යාවට ප්‍රති results ල ලැබේ.

ප්රවේශය

අංකය උපරිම කිරීම සඳහා අපට ඉලක්කම් ආදේශ කළ හැකි බැවින්, අපට මෙහි තේරුම් ගත හැකි එක් දෙයක් නම්, අපි 6 සිට 9 දක්වා පමණක් ආදේශ කළ යුතුය, මන්ද 9 සිට 6 දක්වා ප්‍රතිස්ථාපනය කිරීමෙන් සංඛ්‍යාව කුඩා වනු ඇත.
මෙහි අපට තේරුම් ගත හැකි තවත් දෙයක් නම්, අපි හැකි තරම් වම්පස ඉලක්කම් ආදේශ කළ යුතුය. අපි මේ කාරණය උදාහරණයකින් තේරුම් ගනිමු.

අපට අංකයක් ලබා දී ඇතැයි සිතමු, 6666
අප විසින් ඉලක්කම් 6 සිට 9 දක්වා ප්‍රතිස්ථාපනය කළ යුතුය. අපි නිවැරදි 6 වෙනුවට ආදේශ කළහොත් අපට ලැබෙන්නේ 6669 කි.
අපි වම් කෙළවරේ 6 ප්‍රතිස්ථාපනය කළහොත් අපට 9666 ක් ලැබෙනු ඇත. ඇත්ත වශයෙන්ම මෙම අංකය වෙනුවට එවැනි ප්‍රතිස්ථාපනයකින් ලබාගත් සියලු සංඛ්‍යා වලින් උපරිම වේ.
මේ අනුව අපි වම්පස 6 ප්‍රතිස්ථාපනය කිරීමට උත්සාහ කරමු. තවද අංක 6 හි අංක 9999 හි නොමැති නම් අපි ප්‍රතිස්ථාපන ක්‍රියාවලියක් සිදු නොකරමු.

අපට ලබා දී ඇති අංකය අරාව ස්වරූපයෙන් බිඳ දැමිය හැකි අතර පසුව අපට වම් කෙළවර 6 සිට 9 දක්වා පහසුවෙන් ආදේශ කළ හැකිය. ඉන්පසු අපි අපගේ නව අංකය අරාවෙන් ප්‍රතිනිර්මාණය කර අංකය ප්‍රතිදානය කරමු.
අංකය ඉලක්කම් 4 කට සීමා වන බවට සීමාවක් තිබේ. මේ අනුව අපි 4 වන ප්‍රමාණයේ ශ්‍රේණියක් සාදනු ඇති අතර එමඟින් කුඩා දිග සියල්ලම තෘප්තිමත් වනු ඇත.

ඉතින්, ඇල්ගොරිතම මූලික වශයෙන් ප්‍රධාන කොටස් තුනකින් සමන්විත වේ.
i) අංකය අරාව බවට පරිවර්තනය කිරීම: අපි මෙය කරන්නේ අංක> 0 කොන්දේසිය සමඟ කාල ලූපයක් භාවිතා කරමිනි. සෑම අවස්ථාවකදීම, ඒකක ස්ථානයේ ඉලක්කම් අරාවෙහි වත්මන් දර්ශකයේ ගබඩා කර ඇති අතර අංකය 10 න් බෙදනු ලැබේ.
ii) අරාවෙහි වම්පස 6 සිට 9 දක්වා වෙනස් කිරීම.

උපරිම 69 අංක ලීට්කෝඩ් විසඳුම

වම්පස 6 සිට 9 දක්වා පරිවර්තනය කිරීමෙන් පසු:

උපරිම 69 අංක ලීට්කෝඩ් විසඳුම

iii) අරාව අංකයට පරිවර්තනය කිරීම: අපි මෙය කරන්නේ ලූපයක් භාවිතා කරමිනි.

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

උපරිම 69 අංක ලීට්කෝඩ් විසඳුම සඳහා සී ++ වැඩසටහන

#include <iostream>
using namespace std;
int maximum69Number (int num) 
{
    int arr[4];
    fill(arr,arr+4,0);
    int i=3;
    while(num!=0){
        arr[i--]=num%10;
        num/=10;
    }
    for(i=0;i<=3;i++){
        if(arr[i]==6){arr[i]=9;break;}
    }

    int ans=0,mul=1;
    for(i=3;i>=0;i--){
        ans+=(mul*arr[i]);
        mul*=10;
    }
    return ans;

}
int main()
{
    cout << maximum69Number(9669);
}
9969

උපරිම 69 අංක ලීට්කෝඩ් විසඳුම සඳහා ජාවා වැඩසටහන

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

class Solution
{  
    public static int maximum69Number (int num) 
    {
        int[] arr=new int[4];
        int i=3;
        while(num!=0){
            arr[i--]=num%10;
            num/=10;
        }
        for(i=0;i<=3;i++){
            if(arr[i]==6){arr[i]=9;break;}
        }
        int ans=0,mul=1;
        for(i=3;i>=0;i--){
            ans+=(mul*arr[i]);
            mul*=10;
        }
        return ans;
    }
    public static void main(String args[])
    {
        System.out.println(maximum69Number(9669));
    }
}
9969

උපරිම 69 අංක ලීට්කෝඩ් විසඳුම සඳහා සංකීර්ණතා විශ්ලේෂණය

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

ඕ (1):  අපි 3 ක් කරනවා ලූප උපරිම පුනරාවර්තන 4 කින්. මේ අනුව, මෙම ප්රශ්නය සඳහා මෙය නියත කාලය ද වේ. කෙසේ වෙතත්, අවහිරතා ඉහළ මට්ටමක පවතී නම්, අපි සංඛ්‍යාවේ දිගට සමාන ප්‍රමාණයේ පෙළක් භාවිතා කරමු. එකල අපගේ කාල සංකීර්ණත්වය O (සංඛ්‍යා දිග) වේ.

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

ඕ (1): අපි නියත වන 4 ප්‍රමාණයේ අමතර පෙළක් භාවිතා කර ඇත්තෙමු. මේ අනුව අවකාශයේ සංකීර්ණතාව O (1) වේ.