मध्यम 0 हल किए गए 0% स्वीकृति

Find Right-Triangle Triples

List all integer right triangles with a specified perimeter.

आप क्या सीखेंगे

  • List all integer right triangles for a perimeter
  • Avoid duplicates by ordering sides
  • Prune the search with bounds

समस्या

अनुवाद दिखाएँ

Find every triple of positive integers a < b < c for which a² + b² = c² and a + b + c = perimeter. Return each triple as [a, b, c], ordered by increasing a and then b. Do not include permutations of the same sides.

Implement pythagorean_triplets(perimeter).

Input

perimeter: The required sum of all three sides.

Output

Return a list of triples in the specified order.

सीमाएँ

3 ≤ perimeter ≤ 100,000. Return an empty list if no triangle qualifies.

उदाहरण

उदाहरण 1
इनपुट:
perimeter = 30

अपेक्षित आउटपुट:
expected = [
    [5, 12, 13]
]
इनपुट:
long long perimeter = 30;

अपेक्षित आउटपुट:
std::vector<std::vector<long long>> expected = {
    {5, 12, 13}
};
इनपुट:
long perimeter = 30;

अपेक्षित आउटपुट:
long[][] expected = new long[][] {
    new long[] {5, 12, 13}
};

व्याख्या

5 + 12 + 13 = 30 and 5² + 12² = 13². This is the only qualifying triple.

उदाहरण 2
इनपुट:
perimeter = 11

अपेक्षित आउटपुट:
expected = []
इनपुट:
long long perimeter = 11;

अपेक्षित आउटपुट:
std::vector<std::vector<long long>> expected = {};
इनपुट:
long perimeter = 11;

अपेक्षित आउटपुट:
long[][] expected = new long[][] {};

व्याख्या

No increasing positive integer right-triangle triple sums to 11.

कैसे हल करें

पहले खुद कोशिश करें, फिर एक-एक करके संकेत खोलें।

संकेत 1

A valid triple must satisfy both the Pythagorean equation and the perimeter sum.

संकेत 2

Use the perimeter to limit the search instead of trying every ordering of sides.

संकेत 3

Remember to keep only a < b < c, and skip duplicates from symmetric side choices.

अपेक्षित जटिलता

O(n^2) time, O(1) extra space

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।