 Open in App
Not now

# Python | Maximum Sum Sublist

• Last Updated : 09 Mar, 2023

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))`

Output:

```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))`

Output:

```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))`

Output

```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.

My Personal Notes arrow_drop_up