सर्वात मोठा परिघ त्रिकोण लीटकोड सोल्यूशन


अडचण पातळी सोपे
वारंवार विचारले सी 3 आयओटी
गणित वर्गीकरण

समस्या विधान

समस्येमध्ये ”सर्वात मोठा परिमिती त्रिकोण ”आम्हाला एन व्हॅल्यूज असलेले अ‍ॅरे देण्यात आले आहेत. सर्व मूल्ये सकारात्मक पूर्णांक आहेत. आम्ही या मूल्यांमधून तयार करू शकणार्‍या त्रिकोणाची जास्तीत जास्त परिमिती शोधण्यासाठी प्रश्न विचारा. जर त्रिकोण तयार करणे शक्य नसेल तर आपल्याला 0 प्रिंट करणे आवश्यक आहे.

उदाहरण

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

स्पष्टीकरण: या मूल्यांचा वापर करून तयार होणार्‍या त्रिकोणाची सर्वात मोठी परिमिती 10 आहे आणि त्रिकोणाच्या बाजू 4,3,3 आहेत.

सर्वात मोठे परिमिती त्रिकोण लीटकोड सोल्यूशनसाठी दृष्टिकोन

ही गणिताची मूलभूत समस्या आहे. हे सोडवण्यासाठी आम्हाला हे प्रमेय माहित असणे आवश्यक आहे की कोणत्याही दोन बाजूंच्या लांबीच्या त्रिकोणाच्या बेरीजमध्ये तिसर्‍या बाजूपेक्षा नेहमीच मोठे असते. अन्यथा, ते त्रिकोण तयार करणार नाहीत. समजा त्रिकोणाच्या बाजू आहेत ए, बी आणि सी. त्रिकोणने या प्रमेयाची पूर्तता न केल्यास ते कसे तयार करणे शक्य नाही हे प्रतिमांद्वारे दर्शविले जाते.

सर्वात मोठ्या परिमिती त्रिकोणाचे लीटकोड सोल्यूशन

प्रश्न सर्वात मोठा परिमिती त्रिकोण शोधण्यास सांगत असल्याने, अ + बी> सी, बी + सी> ए आणि अ + सी> बी अटी पूर्ण करणारे सर्व संभाव्य तिहेपैकी आम्हाला त्रिपटी शोधणे आवश्यक आहे ज्यासाठी एक + बी + सी कमाल आहे.

आपल्याला सर्वात मोठा परिमिती मिळविण्यासाठी आम्हाला शक्य तितक्या मोठ्या, बी आणि सीची मूल्ये पाहिजे आहेत. आपण अ‍ॅरेची क्रमवारी लावू आणि नंतर त्यांनी प्रमेय पूर्ण केल्यास आम्ही सर्वात मोठ्या तीन मूल्यांसह प्रारंभ करू. जर ते करत असेल तर त्यांची बेरीज आवश्यक मूल्य आहे. अन्यथा आम्ही पुढील तीन सर्वात मोठी व्हॅल्यूज तपासू.

जर असे त्रिपुरा अस्तित्वात नसेल तर त्रिकोणाची सर्वात मोठी परिमिती 0 आहे.

 अंमलबजावणी

सर्वात मोठ्या परिमिती त्रिकोणसाठी सी ++ कोड

#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

सर्वात मोठा परिमिती त्रिकोणसाठी जावा कोड

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

सर्वात मोठ्या परिमिती त्रिकोण लीटकोड सोल्यूशनचे जटिलता विश्लेषण

वेळ गुंतागुंत

वरील कोडची वेळ जटिलता आहे O (nlogn) कारण आपण अ‍ॅरे सॉर्ट करत आहोत. येथे एन अ‍ॅरेचा आकार आहे.

जागेची जटिलता

वरील कोडची स्पेस कॉम्प्लेक्सिटी आहे ओ (1) कारण आम्ही उत्तर संग्रहित करण्यासाठी फक्त एक व्हेरिएबल वापरत आहोत.

संदर्भ