Find a Specific Pair in Matrix in Python
Specific Pair in Matrix in Python
Here, on this page, we will discuss the program to Find a Specific Pair in Matrix in Python Programming language. Given an n x n matrix mat[n][n] of integers, find the maximum value of mat(c, d) – mat(a, b) overall choices of indexes such that both c > a and d > b.
Method Discussed :
- Method 1 : Naïve Approach
- Method 2 : Efficient Approach
Algorithm ( Method 1 )
- For all values mat(a, b) in the matrix
- Find mat(c, d) with maximum value such that c > a and d > b and keep updating the maximum value found so far.
- Finally return the maximum value.
Time and Space Complexity :
- Time complexity: O(N*N)
- Space complexity: O(1)
Python Code
N = 5 def findMaxValue(mat): maxValue = 0 for a in range(N - 1): for b in range(N - 1): for d in range(a + 1, N): for e in range(b + 1, N): if maxValue < (mat[d][e] - mat[a][b]): maxValue = mat[d][e] - mat[a][b] return maxValue matrix = [[ 1, 2, -1, -4, -20], [-8, -3, 4, 2, 1], [ 3, 8, 6, 1, 3], [-4, -1, 1, 7, -6], [ 0, -4, 10, -5, 1]] print("Maximum Value is", findMaxValue(matrix))
Output
Maximum Value is 18
Algorithm ( Method 2 )
In this method, we pre-process the matrix such that index(i, j) stores the max of elements in the matrix from (i, j) to (N-1, N-1) and in the process keeps on updating the maximum value found so far. Then finally return the maximum value.
Python Code
N = 5 def findMaxValue(mat): maxValue = -100 maxArr = [[0] * N for z in range(N)] maxArr[N - 1][N - 1] = mat[N - 1][N - 1] maxv = mat[N - 1][N - 1] for j in range(N - 2, -1, -1): if mat[N - 1][j] > maxv: maxv = mat[N - 1][j] maxArr[N - 1][j] = maxv maxv = mat[N - 1][N - 1] for i in range(N - 2, -1, -1): if mat[i][N - 1] > maxv: maxv = mat[i][N - 1] maxArr[i][N - 1] = maxv for i in range(N - 2, -1, -1): for j in range(N - 2, -1, -1): if maxArr[i + 1][j + 1] - mat[i][j] > maxValue: maxValue = maxArr[i + 1][j + 1] - mat[i][j] maxArr[i][j] = max(mat[i][j], max(maxArr[i][j + 1], maxArr[i + 1][j])) return maxValue matrix = [[ 1, 2, -1, -4, -20], [-8, -3, 4, 2, 1], [ 3, 8, 6, 1, 3], [-4, -1, 1, 7, -6], [ 0, -4, 10, -5, 1]] print("Maximum Value is", findMaxValue(matrix))
Output
Maximum Value is 18
For similar questions click on the given button
Login/Signup to comment