
Given an m x n matrix , return a new matrix answer where answer[row][col] is the rank of matrix[row][col] .
The rank is an integer that represents how large an element is compared to other elements. It is calculated using the following rules:
The rank is an integer starting from 1 .
If two elements p and q are in the same row or column , then:
If p < q then rank(p) < rank(q)
If p == q then rank(p) == rank(q)
If p > q then rank(p) > rank(q)
The rank should be as small as possible.
The test cases are generated so that answer is unique under the given rules.
m == matrix.lengthn == matrix[i].length1 <= m, n <= 500-10 ^9 <= matrix[row][col] <= 10 ^9