بشپړ غړی د دوه نه صفر انټریوز لیټکوډ حل ته Sum ته بدل کړئ


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي HRT
ریاضی

ستونزه د دوه نه صفر انټیجر لیټکوډ حل ته ټولیز ته انټرنیټ بدل کړئ موږ څخه وغوښتل چې ورکړل شوي تقسیم کړئ. ضمیمه. موږ باید ورکړل شوي عدد دوه نمبر ته ووېړو. په دې دوو عددونو یو محدودیت وضع شوی دی. دا دوه عددونه باید the شمیره ونه لري. د غوره تفاهم لپاره ، موږ به یو څو مثالونو ته یوه کتنه وکړو.

بشپړ غړی د دوه نه صفر انټریوز لیټکوډ حل ته Sum ته بدل کړئ

n = 2
[1,1]

توضیحي: په محصول کې دوه بشپړونه 1 او 1. دي. انډیجر ورته کیدلی شي مګر دوی باید 0 شمیره هم ونه لري. په خوله کې خنډونه پوره کیږي. د دواړو عددونو مجموعه هم وتلو ته مساوي ده. پدې توګه محصول سم دی.

n = 1010
[11, 999]

توضیحات: محصول سم دی ځکه چې د دواړو مساواتو مجموعه 1010 سره مساوي ده. او دوی هم د 0 سره مساوي هیڅ نلري.

د دوه نه صفر انټیجرز لیټکوډ حل ته ناستې ته د بشپړ انټژیر لپاره تګلاره

ستونزه موږ څخه وغوښتل شول چې ورکړل شوي آخذه په دوو عددونو وویشو. هغه حالت چې باید پوره شي دمخه په پورتني بیان کې ویل شوي. لومړی شرط دا دی چې د عددونو مجموعه باید ورکړل شوي عدد سره مساوي وي. دوه عددونه چې بيرته به راستون شي ځکه چې آله بايد کومې شميري ونه لري. د ستونزې حل کولو لپاره ، موږ په لومړي انټژیر یو لوپ چلوو چې له 0 څخه تر n پورې وي. دوهم عدد له لومړۍ اړیکې څخه تعیین کیدلی شي. بیا موږ ګورو چې ایا دواړه عدد دوهم حالت پوره کوي.

د دوهم حالت چیک کولو لپاره ، موږ یو دودیز فعالیت رامینځته کوو چې د ان پټ په توګه بشپړ عدد اخلي. دا ریښتیني یا غلط راستنوي په دې پورې اړه لري چې ورکړل شوي انټرنیټ 0 لري یا نه. د دې لپاره چې وګورئ چې موږ په ساده ډول د پای څخه یو له یو څخه د ډیرو لیرې کولو ته دوام ورکوو.

کوډ

C ++ کوډ د دوه نه صفر انټریوز لیټکوډ حل ته مجموعې ته انټرژر بدلوي

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

bool check(int n){
    while(n>0){
        if(n%10 == 0)
            return false;
        n/=10;
    }
    return true;
}

vector<int> getNoZeroIntegers(int n) {
    for(int i=1;i<n;i++){
        if(check(i) && check(n-i))
            return {i, n-i};
    }
    return {-1,-1};
}

int main(){
    int input = 1010;
    vector<int> output = getNoZeroIntegers(input);
    cout<<output[0]<<" "<<output[1];
}
11 999

د دوه نه زیرو انټیرز لیټکوډ حل ته Sum ته د بشپړ انټرنیټ بدلولو لپاره جاوا کوډ

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

class Main
{
  private static boolean check(int n){
        while(n>0){
            if(n%10 == 0)return false;
            n/=10;
        }
        return true;
    }
    
    public static int[] getNoZeroIntegers(int n) {
        for(int i=1;i<n;i++){
            if(check(i) && check(n-i))
                return new int[]{i, n-i};
        }
        return new int[]{-1,-1};
    }
    
  public static void main (String[] args) throws java.lang.Exception{
    int input = 1010;
      int[] output = getNoZeroIntegers(input);
      System.out.print(output[0]+" "+output[1]);
  }
}
11 999

د پیچلتیا تحلیل

د وخت پیچلتیا

O (NlogN) ، چیرې چې N د ان پټ په توګه ورکول کیږي. لاګ 10 اساس لري ځکه چې زموږ فعالیت چې دا ګوري چې ایا انټژیر 0 لري یا نه د LogN وخت کې کار کوي.

د ځای پیچلتیا

O (1) ، موږ هیڅ معلومات نه ساتو. او بشپړ الګوریتم د متغیرونو ثابت شمیر کاروي. پدې توګه د ځای پیچلتیا مستقل ده.