Python – Row with Minimum difference in extreme values

Given a Matrix, extract the rows with a minimum difference in extreme values.
Examples:
Input : test_list = [[4, 10, 18], [5, 0], [1, 4, 6], [19, 2]]
Output : [[1, 4, 6], [5, 0]]
Explanation : 6 – 1 = 5, 5 – 0 = 5, is minimum difference between extreme values.Input : test_list = [[4, 10, 18], [5, 0], [2, 4, 6], [19, 2]]
Output : [[2, 4, 6]]
Explanation : 6 – 2 = 4, is min diff.
Method #1 : Using list comprehension + min()
In this, we compute minimum difference between extreme values, and then use list comprehension to get particular row with that value difference between extreme values.
Python3
# Python3 code to demonstrate working of # Matrix Minimum difference in extreme values row# Using min() + list comprehension# initializing listtest_list = [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]]# printing original listprint("The original list is : " + str(test_list))# getting min value min_val = min([max(sub) - min(sub) for sub in test_list])# using list comprehension to filter res = [sub for sub in test_list if max(sub) - min(sub) == min_val]# printing result print("Rows with Minimum difference in extreme values : " + str(res)) |
Output:
The original list is : [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]] Rows with Minimum difference in extreme values : [[1, 4, 6]]
Time Complexity: O(n) where n is the number of elements in the list “test_list”. list comprehension + min() performs n number of operations.
Auxiliary Space: O(n), extra space of size n is required
Method #2 : Using min() + list comprehension + filter() + lambda
In this, we perform task of filtering comparing with minimum value using filter() + lambda.
Python3
# Python3 code to demonstrate working of # Matrix Minimum difference in extreme values row# Using min() + list comprehension + filter() + lambda# initializing listtest_list = [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]]# printing original listprint("The original list is : " + str(test_list))# getting min value min_val = min([max(sub) - min(sub) for sub in test_list])# using filter() + lambda to filter res = list(filter(lambda sub : max(sub) - min(sub) == min_val, test_list))# printing result print("Rows with Minimum difference in extreme values : " + str(res)) |
Output:
The original list is : [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]] Rows with Minimum difference in extreme values : [[1, 4, 6]]
Method #3: Using loops
Step-by-step approach:
- Initialize a variable ‘min_diff’ to a very large value.
- Initialize an empty list ‘rows’.
- Loop through each row ‘sub’ in ‘test_list’.
- Calculate the difference between the maximum and minimum value in ‘sub’.
- If the difference is less than ‘min_diff’, update ‘min_diff’ to this value.
- Clear the ‘rows’ list.
Python3
# initializing listtest_list = [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]]# printing original listprint("The original list is : " + str(test_list))# using loops to find the rows with minimum difference in extreme valuesmin_diff = float('inf')rows = []for sub in test_list: diff = max(sub) - min(sub) if diff < min_diff: min_diff = diff rows.clear() if diff == min_diff: rows.append(sub)# printing result print("Rows with Minimum difference in extreme values : " + str(rows)) |
The original list is : [[4, 10, 18], [5, 3, 10], [1, 4, 6], [19, 2]] Rows with Minimum difference in extreme values : [[1, 4, 6]]
Time complexity: O(nm), where n is the number of rows and m is the length of the longest row.
Auxiliary space: O(k), where k is the number of rows with the minimum difference in extreme values.



