Python | Maximum Sum Sublist
We can have an application for finding the lists with the maximum value and print it. This seems quite an easy task and may also be easy to code, but having shorthands to perform the same are always helpful as this kind of problem can come in web development.
Method #1 : Using reduce() + lambda The above two functions can help us achieve this particular task. The lambda function does the task of logic and iteration and reduce function does the task of returning the required result. Works in Python 2 only.
Python
# Python code to demonstrate # maximum sum sublist # using reduce() + lambda # importing functools for reduce() import functools # initializing matrix test_matrix = [[ 1 , 3 , 1 ], [ 4 , 5 , 3 ], [ 1 , 2 , 4 ]] # printing the original matrix print ("The original matrix is : " + str (test_matrix)) # using reduce() + lambda # maximum sum sublist res = functools. reduce ( lambda i, j: i if sum (i) > sum (j) else j, test_matrix) # printing result print ("Maximum sum sublist is : " + str (res)) |
The original matrix is : [[1, 3, 1], [4, 5, 3], [1, 2, 4]] Maximum sum sublist is : [4, 5, 3]
Method #2 : Using max() + key The max function can get the maximum of all the list and key is used to specify on what the max condition has to be applied that is summation in this case.
Python3
# Python3 code to demonstrate # maximum sum sublist # using max() + key # initializing matrix test_matrix = [[ 1 , 3 , 1 ], [ 4 , 5 , 3 ], [ 1 , 2 , 4 ]] # printing the original matrix print ("The original matrix is : " + str (test_matrix)) # using max() + key # maximum sum sublist res = max (test_matrix, key = sum ) # printing result print ("Maximum sum sublist is : " + str (res)) |
The original matrix is : [[1, 3, 1], [4, 5, 3], [1, 2, 4]] Maximum sum sublist is : [4, 5, 3]
Method #3 : Dynamic programming approach
The idea of the above dynamic programming approach is to use a 1D array dp to store the maximum sum subarray ending at each element of a particular row of the given matrix. We initialize dp with the first row of the matrix, and then for each subsequent row, we update the dp array by considering the maximum sum subarray that can be formed by adding the current row to the previous row’s maximum sum subarray. We also keep track of the maximum sum seen so far and the row index of that maximum sum.
At the end of the algorithm, the maximum sum sublist would be the row whose index was stored earlier as having the maximum sum.
Python3
# Python code to demonstrate # maximum sum sublist # using dynamic programming # initializing matrix test_matrix = [[ 1 , 3 , 1 ], [ 4 , 5 , 3 ], [ 1 , 2 , 4 ]] # printing the original matrix print ( "The original matrix is : " + str (test_matrix)) # using dynamic programming # maximum sum sublist dp = test_matrix[ 0 ] max_sum = sum (dp) max_row = 0 for i in range ( 1 , len (test_matrix)): for j in range ( len (test_matrix[ 0 ])): if j = = 0 : dp[j] = test_matrix[i][j] else : dp[j] = max (dp[j - 1 ], 0 ) + test_matrix[i][j] if dp[j] > max_sum: max_sum = dp[j] max_row = i res = test_matrix[max_row] # printing result print ( "Maximum sum sublist is : " + str (res)) |
The original matrix is: [[1, 3, 1], [4, 5, 3], [1, 2, 4]] Maximum sum sublist is: [[1, 3, 1], [4, 5, 3], [1, 2, 4]]
Time complexity: O(mn), where m is the number of rows and n is the number of columns in the matrix.
Auxiliary space: O(n), where n is the number of columns in the matrix.
Please Login to comment...