ရောမ Leetcode Solution သည်လုံး ၀ ဖြစ်သည်


ခက်ခဲအဆင့် အလယ်အလတ်
မကြာခဏမေးတယ် Adobe က အမေဇုံ Apple BlackRock ဘလွန်းဘာ့ဂ် Evernote Facebook က Google LinkedIn တို့ Microsoft က Oracle က တွစ်တာ Yahoo က
သင်္ချာ ကြိုး

ဤပြproblemနာတွင်ကျွန်ုပ်တို့သည်ကိန်းဂဏန်းများကိုပေးထားပြီးရောမဂဏန်းများအဖြစ်ပြောင်းလဲရန်လိုအပ်သည်။ ထို့ကြောင့်ပြtheနာကိုယေဘူယျအားဖြင့်ရောမသို့ရောနှောခြင်းဟုရည်ညွှန်းပြီး၎င်းသည်ရောမ Leetcode Solution သို့ Integer ဖြစ်သည်။ တစ်စုံတစ် ဦး ကရောမဂဏန်းအကြောင်းကိုမသိလျှင်။ ရှေးအချိန်ကလူများသည်မကြာသေးမီကကျွန်ုပ်တို့အသုံးပြုခဲ့သောကိန်းဂဏန်းများကိုမသုံးခဲ့ကြပါ။

ရောမကိန်းဂဏန်းများကိုများသောအားဖြင့်လက်ဝဲမှညာသို့အစဉ်လိုက်စာဖြင့်ရေးသည်၊ သို့သော်၎င်းမှခြွင်းချက်အချို့ရှိသည်။ လာမယ့်ဂဏန်းထက်သေးငယ်တဲ့ကိန်းဂဏန်းအချို့ရှိလျှင်၊ ကျွန်ုပ်တို့သည်ကိန်းဂဏန်းကိုအပေါင်းစုစုပေါင်းမှနုတ်ပါ။ အထွေထွေစည်းကမ်းသတ်မှတ်ချက်သည်တူညီသောဂဏန်းကို ၃ ကြိမ်ထက်မပိုရန်ဖြစ်သည်။ ကိန်းဂဏန်းပြောင်းလဲမှုသို့ကိန်းဂဏန်းပြောင်းလဲခြင်းအတွက်အောက်ပါပုံကိုစစ်ဆေးသင့်သည်။

ရောမ Leetcode Solution သည်လုံး ၀ ဖြစ်သည်

3
III

ရှင်းလင်းချက် - ကျွန်ုပ်သည် ၁ နှင့်ညီမျှသောကြောင့်၊ sum = 1 ရဖို့ ၃ ကြိမ်ထပ်ခါတလဲလဲလုပ်ပါ။

4
IV

ရှင်းလင်းချက် - ကျွန်ုပ်သည် ၄ ​​ကြိမ်ထပ်ခါတလဲလဲပြန်မပြောနိုင်ပါ၊ ဒီတော့ကျွန်တော်ဟာ V မတိုင်ခင်က I ကိုရေးဆွဲခဲ့တယ်။ ကျွန်တော်ဟာ V ထက်ငယ်တဲ့အတွက်၊ 4 ကိုစုစုပေါင်းကနေ 3 နုတ်ထုတ်လိုက်တယ်။ ဒီတော့စုစုပေါင်းပေါင်းလဒ်က 1 နဲ့ညီတယ်။

Integer အတွက် Roman Leetcode Solution ကိုချဉ်းကပ်ပါ

“ Integer to Roman” ပြproblemနာကိုလောဘကြီးစွာဖြင့်ဖြေရှင်းနိုင်ပြီးပထမဆုံးကိန်းကိုအမြင့်ဆုံးတန်ဖိုးသို့ပြောင်းရန်ကြိုးစားသည်။ ပြtheနာအား brute force ချဉ်းကပ်မှုသည်မဖြစ်နိုင်ပါ၊ အကြောင်းမှာ၎င်းသည်မဖြစ်နိုင်သကဲ့သို့ယေဘုယျအားဖြင့်လည်းသက်ဆိုင်မှုမရှိသောကြောင့်ဖြစ်သည်။ ဤနည်းအားဖြင့်ကျွန်ုပ်တို့သည်ရောမဂဏန်းဖြင့်သေးငယ်သည့်ဂိုဏ်းဂဏများသို့ရွေ့လျားနေကြသည်။ ဒါပေမယ့်ကျွန်တော်တို့က 4 ပြောင်းဖို့ကြိုးစားတဲ့အခါဒီချဉ်းကပ်မှုပျက်သွားလိမ့်မယ်။ ဒီချဉ်းကပ်မှုက ၄ ဆထုတ်ပါလိမ့်မယ်။ ဒါကြောင့်ဒီဟာကိုကျော်ဖို့နည်းလမ်းရှာဖို့လိုတယ်။

ကောင်းပြီ၊ ငါတို့အနီးကပ်ကြည့်မယ်ဆိုရင်ဒီခြွင်းချက်ထဲကိုပြေးနိုင်တဲ့ရေတွက်နိုင်တဲ့နည်းလမ်းအချို့ပဲရှိတယ်။ ဤခြွင်းချက်သည်ကျွန်ုပ်တို့သည်ဂဏန်းအချို့ကို ၃ ကြိမ်ထက်ပိုသောအခါမှသာဖြစ်သည်။ ဒါ့အပြင်ကိန်းဂဏန်းစုစုပေါင်းကိုဘယ်လိုရေးမလဲဆိုတာရှာဖို့ကြိုးစားပါ။ ခြွင်းချက်သည် ၄၊ ၉၊ ၄၀၊ ၉၀၊ ၄၀၀၊ ၉၀၀ တို့ဖြစ်သည်ကိုကျွန်ုပ်တို့သိရှိလာရပြီး ၄ င်းတို့ကို IV၊ IX, XL, XC, CD, CM သို့ပြောင်းနိုင်သည်။

ချွင်းချက်များနှင့်ဆက်ဆံခြင်း

ထို့ကြောင့်ယခုအချိန်အထိကျွန်ုပ်တို့သည်ပေးထားသောကိန်းများကိုရရှိနိုင်သည့်မူလတစ်ခုတည်းသောရောမနံပါတ်များသို့ပြောင်းလဲရန်စဉ်းစားနေကြသည်။ ဒါပေမယ့်ခြွင်းချက်တစ်ခုရဖို့အတွက်သူတို့ကိုသီးခြားစီကိုင်တွယ်တယ်။ ထို့ကြောင့်ကျွန်ုပ်တို့သည်နှစ်ခုကိုဖန်တီးသည် Array များ တစ်ခုချင်းစီကိုရောမဂဏန်းနှင့်သက်ဆိုင်သော integral တန်ဖိုးကိုသိုလှောင်ထားတဲ့။ အခြားခင်းကျင်းမှုတစ်ခုကရောမဂဏန်းတွေကိုသိမ်းထားတယ်။ ဤ Array နှစ်ခုစလုံးသည်ကိန်းဂဏန်းများနှင့်ရောမနံပါတ်များကိုတူညီသောအညွှန်းများတွင်သိမ်းဆည်းထားသည်။

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

Integer အတွက် Code သည် Roman Leetcode Solution အတွက်ဖြစ်သည်

Integer အတွက် C ++ code သည် Leetcode Solution အတွက်ဖြစ်သည်

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

string intToRoman(int num) {
    vector<string> romans({"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"});
    vector<int> value({1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000});
    int seqSize = romans.size();
    int idx = seqSize - 1;
    string ans = "";
    while(num>0){
        while(value[idx]<=num){
            ans += romans[idx];
            num -= value[idx];
        }
        idx--;
    }
    return ans;
}

int main(){
    cout<<intToRoman(4);
}
IV

Integer အတွက် Java Code သည် Roman Leetcode Solution သို့ပို့သည်

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

class Main {
    public static String intToRoman(int num) {
        String romans[] = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};
        int value[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
        int seqSize = romans.length;
        int idx = seqSize - 1;
        String ans = "";
        while(num>0){
            while(value[idx]<=num){
                ans += romans[idx];
                num -= value[idx];
            }
            idx--;
        }
        return ans;
    }
    public static void main(String[] args){
    	System.out.println(intToRoman(4));
    }
}

 

IV

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

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

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

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

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