ਅਧਿਕਤਮ 69 ਨੰਬਰ ਲੀਟਕੋਡ ਹੱਲ


ਮੁਸ਼ਕਲ ਪੱਧਰ ਸੌਖੀ
ਅਕਸਰ ਪੁੱਛਿਆ ਜਾਂਦਾ ਹੈ ਐਚ.ਆਰ.ਟੀ.
ਗਣਿਤ

ਸਮੱਸਿਆ ਦਾ ਬਿਆਨ

ਇਸ ਸਮੱਸਿਆ ਵਿੱਚ, ਸਾਨੂੰ 6 ਜਾਂ 9 ਅੰਕਾਂ ਦਾ ਬਣਿਆ ਨੰਬਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ. ਅਸੀਂ ਇਸ ਨੰਬਰ ਦੇ ਇੱਕ ਅੰਕ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹਾਂ ਅਤੇ ਇਸਨੂੰ ਦੂਜੇ ਅੰਕ ਵਿੱਚ ਬਦਲ ਸਕਦੇ ਹਾਂ. ਭਾਵ ਅਸੀਂ to ਤੋਂ replace ਦੀ ਥਾਂ ਲੈ ਸਕਦੇ ਹਾਂ ਜਾਂ ਅਸੀਂ replace ਤੋਂ 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 ਦਿੱਤੀ ਗਈ ਸੰਖਿਆ ਵਿਚ ਜਿਵੇਂ ਕਿ 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 ਦੀ ਇੱਕ ਵਾਧੂ ਐਰੇ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ ਜੋ ਨਿਰੰਤਰ ਹੈ. ਇਸ ਤਰ੍ਹਾਂ ਪੁਲਾੜ ਦੀ ਜਟਿਲਤਾ ਓ (1) ਹੈ.