Ən Böyük Ətraf Üçbucağı Leetcode Həlli

Çətinlik səviyyəsi Asan
Tez-tez soruşulur C3 IoT
alqoritmlər kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions Riyaziyyat çeşidləyiciBaxılıb 90

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 bəyanat

Problemdə ”Ən böyük Perimetr Üçbucaq ”bizə n dəyəri olan bir sıra verilir. Bütün dəyərlər müsbət tam ədədlərdir. Sual, bu dəyərlərdən qura biləcəyimiz üçbucağın maksimum perimetrini tapmağı xahiş et. Üçbucağı qurmaq mümkün olmadıqda 0 yazdırmalıyıq.

misal

arr = [3,2,3,4]
10

Explanation: Bu dəyərlərdən istifadə edərək qurula bilən üçbucağın ən böyük perimetri 10, üçbucaqların tərəfləri isə 4,3,3-dir.

Ən Böyük Ətraf Üçbucağı Leetcode Həlli üçün yanaşma

Bu əsas riyaziyyat problemidir. Buna görə həll etmək üçün bu teoremi bilməliyik ki, hər iki tərəfin uzunluğunun üçbucağında həmişə üçüncü tərəfdən çoxdur. Əks təqdirdə, üçbucaq meydana gətirməyəcəklər. Üçbucağın tərəfləri deyək a, b və c. Şəkillər, bu teoremi təmin etmədiyi təqdirdə bir üçbucaq qurmağın mümkün olmadığını göstərir.

leetcode həllini ən böyük perimetr üçbucağınaPin

Sual ən böyük perimetri üçbucağı tapmağı xahiş etdiyi üçün a + b> c, b + c> a və a + c> b şərtlərini təmin edən bütün üçlülərdən a + olduğu üçlüyü tapmalıyıq. b + c maksimumdur.

Beləliklə, ən böyük ətrafı əldə etmək üçün a, b və c dəyərlərinin mümkün qədər böyük olmasını istəyirik. Dizini sıralayacağıq və sonra teoremi təmin edərsə, ən böyük üç dəyərlə başlayacağıq. bunu edərsə, onların cəmi tələb olunan dəyərdir. əks halda, növbəti üç ən böyük dəyəri yoxlayacağıq.

belə üçqat yoxdursa, üçbucağın ən böyük ətrafı 0-dır.

 Həyata keçirilməsi

Ən Böyük Ətraf Üçbucağı üçün C ++ kodu

#include <bits/stdc++.h> 
using namespace std; 
    int largestPerimeter(vector<int>&  arr) {
        int n=arr.size();
        sort(arr.begin(),arr.end());
       for (int i =n - 1; i > 1; --i)
            if (arr[i] < arr[i - 1] + arr[i - 2])
                return arr[i] + arr[i - 1] + arr[i - 2];
        return 0;
    }
int main() 
{ 
 vector<int> arr = { 3,2,3,4 }; 
 cout<<largestPerimeter(arr)<<endl; 
 return 0;
}
10

Ən Böyük Ətraf Üçbucağı üçün Java kodu

import java.util.Arrays; 
public class Tutorialcup {
    public static int largestPerimeter(int[] arr) {
        Arrays.sort(arr);
        int n= arr.length;
        for (int i =n - 1; i > 1; --i)
            if (arr[i] < arr[i - 1] + arr[i - 2])
                return arr[i] + arr[i - 1] + arr[i - 2];
        return 0;
    }
  public static void main(String[] args) {
    int [] arr = {3,2,3,4}; 
    int ans= largestPerimeter(arr);
    System.out.println(ans);
  }
}

 

10

Ən Böyük Ətraf Üçbucağı Leetcode Həllinin Mürəkkəblik Analizi

Zaman mürəkkəbliyi

Yuxarıdakı kodun zaman mürəkkəbliyi O (nlogn) çünki biz serialı çeşidləyirik. Burada n massivin ölçüsüdür.

Kosmik mürəkkəblik

Yuxarıdakı kodun kosmik mürəkkəbliyi O (1) çünki cavabı saxlamaq üçün yalnız dəyişəndən istifadə edirik.

References

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