Zero Leetcode Solution သို့နံပါတ်ကိုလျှော့ချရန်အဆင့်များ


ခက်ခဲအဆင့် လွယ်ကူသော
မကြာခဏမေးတယ် အမေဇုံ Google HRT Microsoft က
နည်းနည်းခြယ်လှယ်

Zero Leetcode Solution သို့နံပါတ်တစ်ခုလျှော့ချရန်အဆင့်များပြNumberနာတစ်ခုကပေးထားသည် ကိန်း။ ပေးထားတဲ့ကိန်းကို 0 အဖြစ်ပြောင်းဖို့အနည်းဆုံးအဆင့်တွေကိုရှာပါ။ အဆင့် ၂ ခုကိုနုတ်ပြီး ၁ ကိန်း ၂ ကိုစားလို့ရတယ်။ ပြproblemနာကရိုးရိုးလေးပါပဲ။ ဖြေရှင်းနည်းကိုမလေ့လာခင်မှာနမူနာအနည်းငယ်တွေ့ရလိမ့်မယ်။ ။

Zero Leetcode Solution သို့နံပါတ်ကိုလျှော့ချရန်အဆင့်များ

n = 14
6

ရှင်းလင်းချက် - ပေးထားသောကိန်းပြည့်ကို (= 14) သို့ 0 သို့လျှော့ချရန်အနည်းဆုံးအဆင့် ၆ ဆင့်လိုအပ်သည်။ ပထမက ၁၄ ကို ၂ နဲ့စားတော့အခု ၇ ကျန်တော့မယ်။ ၁ နုတ်ရမယ်။ အခုရရှိနိုင်တဲ့ကိန်းက ၆။ ၂ ကိုပြန်ရမယ်။ ပြီးရင် ၁ ကိုသုံးကြိမ်နုတ်ပြီးကိန်းပြည့်ကို = = 6 သို့ 14 ရစေမယ်။

8
4

ရှင်းပြချက်။ ၈ ကို 3 အထိလျှော့ချရန် divide ၃ ခုနှင့် ၁ နုတ်ခြင်းလုပ်ငန်းကိုကျွန်ုပ်တို့အသုံးပြုသည်။ ပထမလှုပ်ရှားမှုသည် ၈ မှ ၄ သို့၊ ၄ မှ ၂၊ ၂ သို့ ၁ သို့လျော့ချနိုင်သည်။ ထို့နောက်ကျွန်ုပ်တို့သည် ၁ မှ ၁ ကိုနုတ်ရန်ရိုးရိုးရှင်းရှင်းဖြစ်သည်။

Zero Leetcode Solution သို့နံပါတ်ကိုလျှော့ချရန်အဆင့်များအတွက် Brute Force ချဉ်းကပ်မှု

အဆိုပါပြproblemနာကိုတော်တော်လေးစံဖြစ်ပြီးအမျိုးမျိုးသောစမ်းသပ်မှုများတွင်အကြိမ်ပေါင်းများစွာမေးမြန်းခံခဲ့ရသည်။ ပြproblemနာအတွက် brute force solution သည်ပြlimitနာကိုအချိန်တိုအတွင်းဖြေရှင်းရန်မလုံလောက်ပါ။ Brute Force Solution သည်ဖြေရှင်းနည်းကိုပြန်လည်အသုံးချခြင်းဖြစ်သည်။ ကိန်းတစ်ခုစီအတွက်ကျွန်ုပ်တို့တွင်ဖြစ်နိုင်ချေရှိသောလုပ်ဆောင်ချက်နှစ်ခုရှိသည်။ ကျနော်တို့ကအဲဒီနှစ်ခုလုံးကိုလုပ်ဆောင်ပြီးတဲ့နောက် modified integer ကိုပြန်လုပ်ပါ။ ဖြေရှင်းချက်များအတွက်အချိန်ရှုပ်ထွေးအဆအဆဖြစ်လိမ့်မည်ထို့ကြောင့်ကြီးမားသောသွင်းအားစုများအတွက်ထိရောက်သောမဟုတ်ပါဘူး။ coded သည့်အခါဖြေရှင်းချက်သည် runtime အမှားသို့ရောက်သွားလိမ့်မည်။

Zero Leetcode Solution သို့နံပါတ်ကိုလျှော့ချရန်အဆင့်များအတွက်အကောင်းဆုံးနည်းလမ်း

အဆိုပါပြproblemနာကိုအလွန်ကျယ်ပြန့်လူသိများကြသည်သောစံပြproblemsနာများတစ်ခုဖြစ်သည်။ ၁ ကိုနုတ်လျှင်မကိန်းတစ်ခုသာရရှိလျှင်ပြwhenနာကိုအလွယ်တကူဖြေရှင်းနိုင်သည်။ ပြီးတော့ကျွန်တော်တို့ကိန်းကိန်းရပြီဆိုတော့ ၂ ကိုစားပါ။ ထို့ကြောင့်ပြtheနာ၏အဖြေသည်ကိန်းဂဏန်း၏ကွာခြားမှုအပေါ်မူတည်သည်။ ကိန်းပြည့်ကိန်းမရှိရင်ဘာကြောင့် ၂ ကိုခွဲတာလဲ။ ဘာဖြစ်လို့လဲဆိုတော့ ၁ ကိုနုတ်တာထက်ထက်ဝက်လျှော့လိုက်ခြင်းအားဖြင့်ဒီကိန်းကိုလျှော့ချတာကအမြဲတမ်းပိုကောင်းတာလားဒါမှမဟုတ်ညီတူညီမျှကောင်းတာကြောင့်ပဲ။ ဘာဖြစ်လို့လဲဆိုတော့ငါတို့မှာဒီဂဏန်းနှစ်ခုကိုသုံးပြီးဒdecimalမကိန်းတွေရမယ်။

Zero Leetcode Solution သို့နံပါတ်များကိုလျှော့ချရန်အဆင့်များအတွက်အကောင်းဆုံးကုဒ်နံပါတ်

C ++ ကုဒ်

#include <bits/stdc++.h>
using namespace std;

int numberOfSteps (int num) {
    int cnt = 0;
    while(num){
        if(num&1)num--;
        else num/=2;
        cnt++;
    }
    return cnt;
}

int main(){
    cout<<numberOfSteps(14);
}
6

ဂျာဗားကုဒ်

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

class Main
{
  public static int numberOfSteps (int num) {
        int cnt = 0;
        while(num > 0){
            if(num%2 == 1)num--;
            else num/=2;
            cnt++;
        }
        return cnt;
    }
    
  public static void main (String[] args) throws java.lang.Exception{
    System.out.print(numberOfSteps(14));
  }
}
6

ရှုပ်ထွေးဆန်းစစ်ခြင်း

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

အို (logN)၊ ဘာလို့လဲဆိုတော့ကျွန်တော်တို့ကိန်းတစ်ခုရတိုင်းကိန်းကို 2 နဲ့စားတယ်။ တစ်ခုချင်းစီကိုမကိန်းတစ်ခုချင်းစီကိုထို့နောက်ကနေ 1 ကိုနှုတ်ခြင်းအားဖြင့်ပင်ကိန်းဂဏန်းသို့ပြောင်းလဲသည်။ ထို့ကြောင့်အချိန်ရှုပ်ထွေးမှုသည်လော်ဂရစ်သမ်ဖြစ်သည်။

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

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