Minimum and maximum possible length of the third side of a triangle
Given two sides of a triangle s1 and s2, the task is to find the minimum and maximum possible length of the third side of the given triangle. Print -1 if it is not possible to make a triangle with the given side lengths. Note that the length of all the sides must be integers.
Examples:
Input: s1 = 3, s2 = 6
Output:
Max = 8
Min = 4
Input: s1 = 5, s2 = 8
Output:
Max = 12
Min = 4
Approach: Let s1, s2 and s3 be the sides of the given triangle where s1 and s2 are given. As we know that in a triangle, the sum of two sides must always be greater than the third side. So, the following equations must be satisfied:
- s1 + s2 > s3
- s1 + s3 > s2
- s2 + s3 > s1
Solving for s3, we get s3 < s1 + s2, s3 > s2 – s1 and s3 > s1 – s2.
It is clear now that the length of the third side must lie in the range (max(s1, s2) – min(s1, s2), s1 + s2)
So, the minimum possible value will be max(s1, s2) – min(s1, s2) + 1 and the maximum possible value will be s1 + s2 – 1.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach #include <iostream> using namespace std; // Function to find the minimum and the // maximum possible length of the third // side of the given triangle void find_length( int s1, int s2) { // Not a valid triangle if (s1 <= 0 || s2 <= 0) { cout << -1; return ; } int max_length = s1 + s2 - 1; int min_length = max(s1, s2) - min(s1, s2) + 1; // Not a valid triangle if (min_length > max_length) { cout << -1; return ; } cout << "Max = " << max_length << endl; cout << "Min = " << min_length; } // Driver code int main() { int s1 = 8, s2 = 5; find_length(s1, s2); return 0; } |
Java
// Java implementation of the approach import java.io.*; class GFG { // Function to find the minimum and the // maximum possible length of the third // side of the given triangle static void find_length( int s1, int s2) { // Not a valid triangle if (s1 <= 0 || s2 <= 0 ) { System.out.print(- 1 ); return ; } int max_length = s1 + s2 - 1 ; int min_length = Math.max(s1, s2) - Math.min(s1, s2) + 1 ; // Not a valid triangle if (min_length > max_length) { System.out.print(- 1 ); return ; } System.out.println( "Max = " + max_length); System.out.print( "Min = " + min_length); } // Driver code public static void main (String[] args) { int s1 = 8 , s2 = 5 ; find_length(s1, s2); } } // This code is contributed by anuj_67.. |
Python3
# Python3 implementation of the approach # Function to find the minimum and the # maximum possible length of the third # side of the given triangle def find_length(s1, s2) : # Not a valid triangle if (s1 < = 0 or s2 < = 0 ) : print ( - 1 , end = ""); return ; max_length = s1 + s2 - 1 ; min_length = max (s1, s2) - min (s1, s2) + 1 ; # Not a valid triangle if (min_length > max_length) : print ( - 1 , end = ""); return ; print ( "Max =" , max_length); print ( "Min =" , min_length); # Driver code if __name__ = = "__main__" : s1 = 8 ; s2 = 5 ; find_length(s1, s2); # This code is contributed by AnkitRai01 |
C#
// C# implementation of the approach using System; class GFG { // Function to find the minimum and the // maximum possible length of the third // side of the given triangle static void find_length( int s1, int s2) { // Not a valid triangle if (s1 <= 0 || s2 <= 0) { Console.Write(-1); return ; } int max_length = s1 + s2 - 1; int min_length = Math.Max(s1, s2) - Math.Min(s1, s2) + 1; // Not a valid triangle if (min_length > max_length) { Console.WriteLine(-1); return ; } Console.WriteLine( "Max = " + max_length); Console.WriteLine( "Min = " + min_length); } // Driver code public static void Main () { int s1 = 8, s2 = 5; find_length(s1, s2); } } // This code is contributed by anuj_67.. |
Javascript
<script> // javascript implementation of the approach // Function to find the minimum and the // maximum possible length of the third // side of the given triangle function find_length(s1 , s2) { // Not a valid triangle if (s1 <= 0 || s2 <= 0) { document.write(-1); return ; } var max_length = s1 + s2 - 1; var min_length = Math.max(s1, s2) - Math.min(s1, s2) + 1; // Not a valid triangle if (min_length > max_length) { document.write(-1); return ; } document.write( "Max = " + max_length+ "<br/>" ); document.write( "Min = " + min_length); } // Driver code var s1 = 8, s2 = 5; find_length(s1, s2); // This code is contributed by todaysgaurav </script> |
Max = 12 Min = 4
Time Complexity: O(1)
Auxiliary Space: O(1)