Minimum And Maximum

Easy
0/40
Average time to solve is 15m
profile
Contributed by
31 upvotes
Asked in companies
AmazonHSBC

Problem statement

You have been given two integers 'A' and 'B' return minimum and maximum of both the numbers without branching.

Note :
Branching includes if-else statements, the ternary operator, or switch-case statements. Therefore you should not use any of the above approaches to solving the problem.
Detailed explanation ( Input/output format, Notes, Images )
Input Format :
The first line contains a single integer ‘T’ representing the number of test cases.

The only line of each test case contains two space-separated integers 'A' and 'B' representing two integers whose minimum and the maximum you need to return.
Output Format :
For each test case return the minimum and maximum of two numbers.
Note:
You do not need to print anything; it has already been taken care of. Just implement the function.
Constraints :
1 <= T <= 1000
1 <= 'A' <= 10^9
1 <= 'B' <= 10^9

Time Limit: 1sec
Sample Input 1 :
4
1 1
2 1
17 13
11 24
Sample Output 1 :
1 1
1 2
13 17
11 24
Explanation For Sample Input 1:
Test case 1 : 

1 is the minimum of the two numbers.1 is the maximum of the two numbers. Therefore the answer is 1 1.

Test case 2 :

1 is the minimum of the two numbers.2 is the maximum of the two numbers. Therefore the answer is 1 2.

Test case 3 :

13 is the minimum of the two numbers.17 is the maximum of the two numbers. Therefore the answer is 13 17.

Test case 4 :

11 is the minimum of the two numbers.24 is the maximum of the two numbers. Therefore the answer is 11 24.
Sample Input 2 :
2
15 20
4 3
Sample Output 2 :
15 20
3 4
Hint

Using XOR operator.

Approaches (2)
XOR and Comparison Operator

Let us assume ‘b’ is minimum and ‘a’ is maximum among ‘a’ and ‘b’.( ‘a’ < ‘b’ ) is the comparison we will be using. We will calculate minimum and maximum as follows: 

 

  • We can write the minimum as ‘b’ ^ (( ‘a’ ^ ‘b’) & - ( ‘a’ < ‘b’)).
    • If ‘b’ is minimum ‘a’ < ‘b’ comes out to be all zeroes. (‘a’ ^ ‘b’) & ‘0’ comes out to ‘0’. Therefore expression value comes out to be ‘b’ finally which is the minimum.
    • If ‘a’ is minimum ‘a’ < ‘b’ comes out to be all ones. (‘a’ ^ ‘b’) & ‘1’ comes out to (‘a’ ^ ‘b’). Therefore expression value comes out to be ‘a’ finally which is the minimum.

 

  • We can write maximum as ‘a’ ^ (( ‘a’ ^ ‘b’) & - ( ‘a’ < ‘b’)).
    • If ‘a’ is maximum ‘a’ < ‘b’ comes out to be all zeroes. (‘a’ ^ ‘b’) & ‘0’ comes out to ‘0’. Therefore expression value comes out to be ‘a’ finally which is the maximum.
    • If ‘b’ is maximum ‘a’ < ‘b’ comes out to be all ones. (‘a’ ^ ‘b’) & ‘1’ comes out to (‘a’ ^ ‘b’). Therefore expression value comes out to be ‘b’ finally which is the maximum.

 

  • Return the minimum and the maximum.
Time Complexity

O(1)

 

As we just apply the bitwise operation twice, constant time is taken

Space Complexity

O(1)

 

As we just need to store only two values minimum and maximum, constant space is used.

Code Solution
(100% EXP penalty)
Minimum And Maximum
Full screen
Console