Tamsayıları Sıfır Olmayan Tam Tam İki Leetcode Həlli Cəminə çevirin

Çətinlik səviyyəsi Asan
Tez-tez soruşulur HRT
alqoritmlər kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions RiyaziyyatBaxılıb 59

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Problem Tamsayı İki Sıfır Tam Tamın Cəminə Keçirmə problemi Leetcode Solution verilmiş bölməni istədi tam. Verilən tam ədədi iki ədədə bölməliyik. Bu iki tam ədədin üzərində bir məhdudiyyət var. Bu iki tam ədədə 0 rəqəmi olmamalıdır. Daha yaxşı başa düşmək üçün bir neçə nümunəyə nəzər salacağıq.

Tamsayıları Sıfır Olmayan Tam Tam İki Leetcode Həlli Cəminə çevirinPin

n = 2
[1,1]

İzahat: Çıxışdakı iki ədəd 1 və 1-dir. Tam ədədlər eyni ola bilər, lakin 0 rəqəmi olmamalıdır. Çıxışda məhdudiyyət təmin olunur. Hər iki tam ədədin cəmi də daxilolmaya bərabərdir. Beləliklə çıxış düzgündür.

n = 1010
[11, 999]

İzahat: Çıxış düzgündür, çünki hər iki tamın cəmi 1010-a bərabərdir. Həm də onların 0-a bərabər bir rəqəmi yoxdur.

Tamsayıları Sıfır Olmayan Tam Tam İki Leetcode Solution-un Cəminə çevirmək üçün yanaşma

Problem, verilmiş girişi iki tam ədədə bölməyimizi istədi. Riayət edilməli olan şərt yuxarıdakı təsvirdə artıq bildirilmişdir. Birinci şərt budur ki, tam ədədin cəmi verilmiş tam ədədə bərabər olmalıdır. Çıxış olaraq qaytarılacaq iki tam ədədə 0 rəqəm daxil olmamalıdır. Problemi həll etmək üçün 1-dən n-ə qədər olan ilk tamın üzərində bir döngə aparırıq. İkinci tam ədədi birinci əlaqədən çıxarmaq olar. Sonra hər iki tam rəqəmin ikinci şərti təmin etdiyini yoxlayırıq.

İkinci şərti yoxlamaq üçün bir ədədi giriş kimi götürən xüsusi bir funksiya yaradırıq. Verilən tam ədədin 0 olub-olmamasından asılı olaraq doğru və ya yalan qaytarır. Rəqəmləri sondan bir-bir silməyə davam etdiyimizi yoxlamaq üçün.

Kodu

Tamsayıları Sıfır Olmayan Tamsayıların Leetcode həllinin iki cəminə çevirmək üçün C ++ kodu

#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

Tam ədədi iki sıfır olmayan tam ədədin Leetcode həllinin cəminə çevirmək üçün Java kodu

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

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (NlogN), burada N giriş olaraq verilən tam ədəddir. Girişin bazası 10-a malikdir, çünki tam ədədin 0 olub-olmadığını yoxlayan funksiyamız logN vaxtında işləmir.

Kosmik Mürəkkəblik

O (1), heç bir məlumat saxlamırıq. Və bütün alqoritm sabit sayda dəyişəndən istifadə edir. Beləliklə kosmik mürəkkəblik sabitdir.

Crack Sistemi Dizayn Müsahibələri
Translate »
2