अधिकतम 69 नंबर Leetcode Solution


कठिनाई स्तर आसान
में अक्सर पूछा एचआरटी
मठ

समस्या का विवरण

इस समस्या में, हमें अंक 6 या 9 से बना एक नंबर दिया जाता है। हम इस संख्या के एक अंक को बदल सकते हैं और इसे दूसरे अंक में बदल सकते हैं। यानी हम 6 से 9 की जगह ले सकते हैं या हम 9 से 6. की जगह ले सकते हैं। हमें सबसे अधिक एक की जगह अधिकतम संख्या प्राप्त करनी होगी।

उदाहरण

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 में दी गई संख्या में मौजूद नहीं है तो हम कोई भी प्रतिस्थापित ऑपरेशन नहीं करेंगे।

हम दिए गए नंबर को एक सरणी के रूप में तोड़ सकते हैं और फिर हम बाईं ओर 6 को 9 आसानी से बदल सकते हैं। फिर हम अपने नए नंबर को एरे से रीक्रिएट करेंगे और नंबर को आउटपुट करेंगे।
एक बाधा है कि संख्या 4 अंकों तक सीमित है। इस प्रकार हम आकार 4 की एक सरणी बनाएंगे, जो छोटी संख्या के सभी नंबरों को भी संतुष्ट करेगा।

तो, एल्गोरिथ्म मूल रूप से तीन मुख्य भागों को शामिल करता है।
i) संख्या को सरणी में परिवर्तित करना: हम संख्या> 0 की स्थिति के साथ थोड़ी देर के लूप का उपयोग करके ऐसा कर रहे हैं। हर बार, इकाई स्थान पर अंक एक सरणी के वर्तमान सूचकांक में संग्रहीत किया जाता है और संख्या 10 से विभाजित होती है।
ii) सरणी में सबसे बाईं ओर 6 से 9 को बदलना।

अधिकतम 69 नंबर Leetcode Solution

बाएं को 6 से 9 में परिवर्तित करने के बाद:

अधिकतम 69 नंबर Leetcode Solution

iii) सरणी को संख्या में परिवर्तित करना: हम एक लूप का उपयोग करके ऐसा कर रहे हैं।

कार्यान्वयन

अधिकतम 69 नंबर Leetcode Solution के लिए C ++ प्रोग्राम

#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 नंबर Leetcode Solution के लिए जावा प्रोग्राम

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) है।