പരമാവധി 69 നമ്പർ ലീറ്റ്കോഡ് പരിഹാരം


വൈഷമ്യ നില എളുപ്പമായ
പതിവായി ചോദിക്കുന്നു എച്ച്ആർടി
മഠം

പ്രശ്നം പ്രസ്താവന

ഈ പ്രശ്‌നത്തിൽ‌, 6 അല്ലെങ്കിൽ‌ 9 അക്കങ്ങൾ‌ ഉൾ‌ക്കൊള്ളുന്ന ഒരു നമ്പർ‌ ഞങ്ങൾ‌ക്ക് നൽ‌കി. ഈ നമ്പറിന്റെ ഒരു അക്കത്തെ മാറ്റി പകരം മറ്റൊരു അക്കത്തിലേക്ക് മാറ്റാൻ‌ ഞങ്ങൾ‌ക്ക് കഴിയും. അതായത് നമുക്ക് 6 മുതൽ 9 വരെ മാറ്റിസ്ഥാപിക്കാം അല്ലെങ്കിൽ 9 മുതൽ 6 വരെ മാറ്റിസ്ഥാപിക്കാം. നമുക്ക് പകരം വയ്ക്കാവുന്ന പരമാവധി എണ്ണം output ട്ട്പുട്ട് ചെയ്യണം.

ഉദാഹരണം

num = 9669
9969

വിശദീകരണം:

ആദ്യ അക്ക ഫലങ്ങൾ മാറ്റുന്നത് 6669 ൽ.
രണ്ടാമത്തെ അക്ക ഫലങ്ങൾ മാറ്റുന്നത് 9969 ൽ.
അതുപോലെ തന്നെ മൂന്നാം അക്കം മാറ്റുന്നത് 9699 ൽ.
നാലാമത്തെ അക്ക ഫലങ്ങൾ മാറ്റുന്നത് 9666 ൽ.
പരമാവധി എണ്ണം 9969 ആണ്.

9996
9999

വിശദീകരണം:

അവസാന അക്കം 6 മുതൽ 9 വരെ മാറ്റുന്നത് പരമാവധി സംഖ്യയിൽ കലാശിക്കുന്നു.

സമീപനം

സംഖ്യ പരമാവധി വർദ്ധിപ്പിക്കാൻ നമുക്ക് ഒരു അക്കത്തെ മാറ്റിസ്ഥാപിക്കാൻ കഴിയുമെന്നതിനാൽ, ഇവിടെ നമുക്ക് മനസിലാക്കാൻ കഴിയുന്ന ഒരു കാര്യം, ഞങ്ങൾ 6 മുതൽ 9 വരെ മാത്രം മാറ്റിസ്ഥാപിക്കണം, കാരണം 9 മുതൽ 6 വരെ മാറ്റിസ്ഥാപിക്കുന്നത് സംഖ്യയെ ചെറുതാക്കും.
ഇവിടെ നമുക്ക് മനസിലാക്കാൻ കഴിയുന്ന മറ്റൊരു കാര്യം, കഴിയുന്നത്ര ഇടത് വശത്ത് ഒരു അക്കത്തെ മാറ്റിസ്ഥാപിക്കണം എന്നതാണ്. ഒരു ഉദാഹരണം ഉപയോഗിച്ച് ഈ കാര്യം മനസിലാക്കാം.

ഞങ്ങൾക്ക് 6666 എന്ന നമ്പർ നൽകിയിട്ടുണ്ടെന്ന് കരുതുക
രൂപംകൊണ്ട സംഖ്യ പരമാവധി ആയ 6 മുതൽ 9 വരെ ഒരു അക്കത്തെ ഞങ്ങൾ മാറ്റിസ്ഥാപിക്കണം. വലതുവശത്തെ 6 മാറ്റിസ്ഥാപിച്ചാൽ നമുക്ക് 6669 ലഭിക്കും.
ഇടത് വശത്ത് 6 മാറ്റിസ്ഥാപിച്ചാൽ നമുക്ക് 9666 ലഭിക്കുന്നു, തീർച്ചയായും ഈ നമ്പറിൽ അത്തരം മാറ്റിസ്ഥാപിക്കൽ വഴി നേടിയ എല്ലാ സംഖ്യകളുടെയും പരമാവധി എണ്ണം.
ഇപ്രകാരം ഇടത് വശത്തെ 6 മാറ്റിസ്ഥാപിക്കാൻ ഞങ്ങൾ ശ്രമിക്കും. തന്നിരിക്കുന്ന നമ്പറിൽ 6 ഇല്ലെങ്കിൽ ഉദാ. 9999, പകരം ഞങ്ങൾ ഒരു മാറ്റിസ്ഥാപിക്കൽ പ്രവർത്തനവും നടത്തുകയില്ല.

തന്നിരിക്കുന്ന സംഖ്യയെ ഒരു അറേയുടെ രൂപത്തിൽ തകർക്കാൻ നമുക്ക് കഴിയും, തുടർന്ന് ഇടത് 6 നെ 9 കൊണ്ട് എളുപ്പത്തിൽ മാറ്റിസ്ഥാപിക്കാം. തുടർന്ന് ഞങ്ങൾ അറേയിൽ നിന്ന് ഞങ്ങളുടെ പുതിയ നമ്പർ പുന ate സൃഷ്‌ടിക്കുകയും നമ്പർ output ട്ട്‌പുട്ട് ചെയ്യുകയും ചെയ്യും.
ഈ സംഖ്യ 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 നമ്പർ ലീറ്റ്കോഡ് പരിഹാരത്തിനായുള്ള സങ്കീർണ്ണത വിശകലനം

സമയ സങ്കീർണ്ണത

O (1):  ഞങ്ങൾ 3 പ്രകടനം നടത്തുന്നു ലൂപ്പുകൾ പരമാവധി 4 ആവർത്തനങ്ങളിൽ. അതിനാൽ, ഈ ചോദ്യത്തിനുള്ള സ്ഥിരമായ സമയവും ഇതാണ്. എന്നിരുന്നാലും, നിയന്ത്രണം ഉയർന്നതാണെങ്കിൽ, അക്കത്തിന്റെ നീളത്തിന് തുല്യമായ വലുപ്പമുള്ള ഒരു ശ്രേണി ഞങ്ങൾ ഉപയോഗിക്കും. അക്കാലത്ത് ഞങ്ങളുടെ സമയ സങ്കീർണ്ണത O (സംഖ്യയുടെ ദൈർഘ്യം) ആയിരിക്കും.

ബഹിരാകാശ സങ്കീർണ്ണത 

O (1): 4 വലുപ്പമുള്ള ഒരു അധിക ശ്രേണി ഞങ്ങൾ ഉപയോഗിച്ചു, അത് സ്ഥിരമാണ്. അങ്ങനെ സ്ഥല സങ്കീർണ്ണത O (1) ആണ്.