Dikdörtgen Leetcode həllini qurun

Çətinlik səviyyəsi Asan
alqoritmlər kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions RiyaziyyatBaxılıb 74

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.

Dikdörtgen Leetcode Çözümünün Qurulması problemi bir veb dizayneri olduğunuzu bildirir. Və əvvəlcədən müəyyən edilmiş bir sahəsi olan bir veb səhifə dizayn etmək üçün bir tapşırıq verilir. Dizaynla bağlı bəzi məhdudiyyətlər var. Veb səhifənin uzunluğu veb səhifənin genişliyinə və ya daha çox olmalıdır, dizayn edilmiş veb səhifənin sahəsi verilən sahəyə bərabər olmalıdır. Nəhayət, ən azı deyil, uzunluq və eni arasındakı fərq mümkün qədər az olmalıdır. Beləliklə, problemin həllinə dərindən dalmadan əvvəl bir neçə nümunəyə nəzər salaq.

Dikdörtgen Leetcode həllini qurunPin

area = 4
[2,2]

İzahat: Sahəsi 4-ə bərabər olan veb səhifənin uzunluğu və eni 1 × 4 və ya 2 × 2 ola bilər. Ancaq uzunluğu və eni tapmaq lazımdır ki, aralarında minimum fərq olsun. 2 × 2 ölçüləri seçmək daha yaxşıdır. 2 × 2 ölçüsü, uzunluğun səhifənin genişliyinə daha çox və ya bərabər olmasını da göstərir.

area = 23
[23, 1]

İzahat: Sahəsi = 23 olan yalnız iki veb səhifənizə sahib ola bilərsiniz. 23 × 1 və ya 1 × 23 ölçülərinə sahib ola bilərsiniz. 1 × 23 ölçüləri olan veb səhifə ilk şərtimizi pozduğundan. Yalnız 23 × 1 ölçülü veb səhifəyə sahib ola bilərik.

Dikdörtgen Leetcode həllinin qurulmasına yanaşma

Dikdörtgen Leetcode Çözümünün Qurulması problemi, əvvəlcədən müəyyən edilmiş bir sahə ilə veb səhifənin uyğun ölçüsünü tapmağımızı xahiş edir. Veb-səhifə ölçüləri qoyulmuş məhdudiyyətləri təmin etməlidir. Üç məhdudiyyət bunlardır: uzunluq veb-səhifənin genişliyinə və ya daha çox, dizayn edilmiş veb səhifənin sahəsi verilmiş sahəyə bərabər olmalıdır, uzunluq və en arasındakı fərq minimum olmalıdır. Sadəcə, verilən ərazinin kvadrat kökünə qədər olan tam ədədlər üzərində döngə verərək verilmiş məhdudiyyətləri təmin edən ölçülər toplusunu asanlıqla tapa bilərik. Mövcud tam ədədin ərazini bölüşdürdüyünü yoxlamağa davam edirik. Elədirsə, həmkarı arasındakı fərqin (verilən sahəni cari tam ədədə bölməklə alınan hissənin) cari dəstdən az fərqə sahib olub olmadığını yoxlayırıq. Bütün şərtlər yerinə yetirilərsə, cavabı yeniləyirik.

Əvvəlcə cavabı areax1 olaraq təyin etdik, çünki həmişə verilən məhdudiyyətləri təmin edir. Və həll yolunda, aralarında daha az fərq olan daha yaxşı bir dəst tapmağa çalışırıq. Sonda ölçüləri bir array.

Dördbucaqlı Leetcode Həllinin Kodu

C ++ kodu

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

vector<int> constructRectangle(int area) {
    vector<int> ans({area, 1});
    for(int i=1;i*i<=area;i++){
        if(area%i == 0 && (area/i - i)<(ans[0] - ans[1]))
            ans[0] = area/i, ans[1] = i;
    }
    return ans;
}

int main(){
    vector<int> ans = constructRectangle(4);
    cout<<ans[0]<<", "<<ans[1];
}
2, 2

Java kodu

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

class Main
{
    public static int[] constructRectangle(int area) {
        int[] ans = {area, 1};
        for(int i=1;i*i<=area;i++){
            if(area%i == 0 && (area/i - i)<(ans[0] - ans[1])){
                ans[0] = area/i;
                ans[1] = i;
            }
        }
        return ans;
    }
    
  public static void main (String[] args) throws java.lang.Exception{
    int[] ans = constructRectangle(4);
    
    System.out.println(ans[0] + ", " + ans[1]);
  }
}
2, 2

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (sqrt (N)), burada N istifadəçiyə verilən sahədir. Verilən sahənin kvadrat kökünə qədər bütün bölənləri tapmağa çalışdığımızdan, zaman mürəkkəbliyi girişin kvadrat köküdür.

Kosmik Mürəkkəblik

O (1), yalnız sabit dəyişənlərdən istifadə etdiyimiz üçün. Kosmik mürəkkəblik də sabitdir.

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