အများဆုံး 69 နံပါတ် Leetcode ဖြေရှင်းချက်  


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် HRT
algorithms coding အင်တာဗျူး အင်တာဗျူး LeetCode LeetCodeSolutions သင်္ချာ

ပြProbleနာဖော်ပြချက်  

ဒီပြproblemနာမှာ၊ ကျွန်တော်တို့ကဂဏန်း ၆၊ ၉ နဲ့ဖွဲ့စည်းထားတဲ့နံပါတ်ကိုပေးထားတယ်။ ဒီနံပါတ်ရဲ့ဂဏန်းတစ်လုံးကိုအစားထိုးပြီးနောက်ဂဏန်းအစားထိုးလို့ရတယ်။ ဆိုလိုသည်မှာကျွန်ုပ်တို့သည် ၆ မှ ၉ ကိုအစားထိုးနိုင်သည်။ သို့မဟုတ် ၉ မှ ၆ ကိုအစားထိုးနိုင်သည်။ ကျွန်ုပ်တို့သည်အများဆုံးရရှိနိုင်သောအများဆုံးအရေအတွက်ကိုထုတ်ပေးရမည်။

နမူနာ

num = 9669
9969

ရှင်းလင်းချက်:

ပထမဂဏန်းရလဒ်များကိုပြောင်းခြင်း ၆၆၆၉ ။
ဒုတိယဂဏန်းရလဒ်များကိုပြောင်းခြင်း ၉၉၆၉ ။
အလားတူ 9699 တွင်တတိယဂဏန်းရလဒ်များကိုပြောင်းခြင်း။
စတုတ္ထဂဏန်းရလဒ်များကိုပြောင်းခြင်း 9666 ။
အများဆုံးနံပါတ်မှာ ၉၉၆၉ ဖြစ်သည်။

9996
9999

ရှင်းလင်းချက်:

နောက်ဆုံးဂဏန်း ၆ မှ ၉ ကိုပြောင်းလဲခြင်းသည်အများဆုံးအရေအတွက်ကိုဖြစ်ပေါ်စေသည်။

ချဉ်းကပ်နည်း  

နံပါတ်အမြင့်ဆုံးဖြစ်စေရန်ဂဏန်းတစ်ခုကိုကျွန်ုပ်တို့အစားထိုးနိုင်သဖြင့်ကျွန်ုပ်တို့နားလည်နိုင်သည့်အရာတစ်ခုမှာ ၆ မှ ၉ ကိုသာအစားထိုးသင့်သည်၊
ဒီမှာကျွန်တော်တို့နားလည်နိုင်တဲ့နောက်အချက်တစ်ခုကတော့ဘယ်ဂဏန်းကိုတတ်နိုင်သမျှနေရာမှာအစားထိုးသင့်တယ်။ ဒါကိုဥပမာတစ်ခုနဲ့နားလည်ကြရအောင်။

၆၆၆၆ ကိုပေးထားတဲ့ကိန်းတစ်ခုဆိုပါစို့
ကျွန်ုပ်တို့သည် ၆ မှ ၉ အထိရှိသည့်ဂဏန်းကိုအစားထိုးရန်လိုအပ်သည်၊ သို့မှသာဖွဲ့စည်းထားသောနံပါတ်သည်အများဆုံးဖြစ်သည်။ ညာဘက် ၆ ကိုအစားထိုးမယ်ဆိုရင် ၆၆၆၉ ရမယ်။
ဘယ်ဘက် 6 ကိုအစားထိုးမယ်ဆိုရင် ၉၆၆၆ ရမယ်။ ဒီနံပါတ်မှာဒီနံပါတ်နဲ့အစားထိုးမယ်။
ထို့ကြောင့်ကျွန်ုပ်တို့သည်လက်ဝဲ ၆ ကိုအစားထိုးရန်ကြိုးစားပါလိမ့်မည်။ အကယ်၍ ပေးထားသောနံပါတ် (ဥပမာ - ၉၉၉၉) တွင်မရှိလျှင် ၆ ခုအစားထိုးလုပ်ဆောင်မှုကိုပြုလုပ်မည်မဟုတ်ပါ။

လည်းကြည့်ရှုပါ
ဂြိုလ်သားအဘိဓါန်

ပေးထားတဲ့နံပါတ်ကိုခင်းကျင်းမှုပုံစံတစ်ခုအနေနဲ့ကျိုးပဲ့နိုင်မယ်။ ပြီးတော့ဘယ်ဘက်အခြမ်း ၆ ကို ၉ နဲ့အလွယ်တကူအစားထိုးနိုင်တယ်။ ပြီးရင်ကျွန်တော်တို့နံပါတ်အသစ်ကို array ထဲကိုထပ်ပြီးပြန်ထုတ်ပါမယ်။
ဒီနံပါတ်ကိုဂဏန်း ၄ လုံးနဲ့ကန့်သတ်ထားတယ်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်အရွယ်အစားသေးငယ်သောနံပါတ်များကိုကျေနပ်ရောင့်ရဲစေမည့်အရွယ်အစား 4 ခင်းကျင်းမှုကိုဖန်တီးပါလိမ့်မည်။

ထို့ကြောင့် algorithm တွင်အဓိကအပိုင်းသုံးပိုင်းပါဝင်သည်။
i) နံပါတ်ကို array သို့ပြောင်းခြင်း၊ ငါတို့ဒါကို a သုံးပြီးလုပ်နေတာ နေစဉ်ကွင်းဆက် ဂဏန်း> ၀ အခြေအနေနှင့် အခါတိုင်းယူနစ်နေရာရှိဂဏန်းကို array ၏လက်ရှိအညွှန်းတွင်သိမ်းဆည်းထားပြီးနံပါတ်အား ၁၀ ဖြင့်ပိုင်းခြားသည်။
ii) ခင်းကျင်း၌လက်ဝဲ 6 မှ 9 ပြောင်းလဲခြင်း။

အများဆုံး 69 နံပါတ် Leetcode ဖြေရှင်းချက်

လက်ဝဲ ၆ မှ ၉ သို့ပြောင်းပြီးနောက်

အများဆုံး 69 နံပါတ် Leetcode ဖြေရှင်းချက်

iii) Array ကိုနံပါတ်သို့ပြောင်းလဲခြင်း - loop ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ဤအရာကိုလုပ်ဆောင်နေကြသည်။

အကောင်အထည်ဖော်ရေး  

အများဆုံး 69 နံပါတ် Leetcode ဖြေရှင်းချက်များအတွက် 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 ဖြေရှင်းနည်းအတွက် Java အစီအစဉ်

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 နံပါတ် Leetcode ဖြေရှင်းချက်များအတွက်ရှုပ်ထွေးခွဲခြမ်းစိတ်ဖြာ  

အချိန်ရှုပ်ထွေး

အို (၁)  ကျနော်တို့ 3 ဖျော်ဖြေနေကြသည် ကွင်း max ကိုမှာ 4 ကြားမှာ၏။ ထို့ကြောင့်ဤမေးခွန်းသည်အမြဲတမ်းအချိန်ဖြစ်သည်။ သို့သော် အကယ်၍ ကန့်သတ်ချက်သည်မြင့်မားပါကကျွန်ုပ်တို့သည်အရေအတွက်၏အရှည်နှင့်တူညီသောအရွယ်အစားခင်းကျင်းခြင်းကိုအသုံးပြုလိမ့်မည်။ ထိုအချိန်တွင်ကျွန်ုပ်တို့၏အချိန်ရှုပ်ထွေးမှုသည် O (အရေအတွက်အရှည်) ဖြစ်လိမ့်မည်။

လည်းကြည့်ရှုပါ
အများဆုံးပျှမ်းမျှတန်ဖိုးနှင့်အတူ Path ကို

အာကာသရှုပ်ထွေးမှု 

အို (၁) ကျွန်ုပ်တို့သည်အဆက်မပြတ်ဖြစ်သောအပို 4 အရွယ်အပိုခင်းကျင်းမှုကိုအသုံးပြုခဲ့သည်။ ထို့ကြောင့်အာကာသရှုပ်ထွေးအို (1) ဖြစ်ပါတယ်။