source: https://leetcode.com/problems/equal-row-and-column-pairs/description/
Equal Row and Column Pairs
Description
Given a 0-indexed n x n integer matrix grid, return the number of pairs (ri, cj) such that row ri and column cj are equal.
A row and column pair are considered equal if they contain the same elements in the same order (i.e., an equal array).
Example 1:
Input: grid = [[3,2,1],[1,7,6],[2,7,7]]
Output: 1
Explanation: There is one equal row and column pair:
- (Row 2, Column 1): [2,7,7]
Example 2:
Input: grid = [[3,1,2,2],[1,4,4,5],[2,4,2,2],[2,4,2,2]]
Output: 3
Explanation: There are three equal row and column pairs:
- (Row 0, Column 0): [3,1,2,2]
- (Row 2, Column 2): [2,4,2,2]
- (Row 3, Column 2): [2,4,2,2]
Constraints:
- n == grid.length == grid[i].length
- 1 <= n <= 200
- 1 <= grid[i][j] <= 105
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
class Solution { public int equalPairs(int[][] grid) { HashMap<String, Integer> rowMap = new HashMap<>(); for(int[] row: grid){ String r = Arrays.toString(row); rowMap.put(r, rowMap.getOrDefault(r, 0)+1); } //System.out.println(rowMap); int count = 0; for(int c = 0; c<grid[0].length;c++){ StringBuilder sb = new StringBuilder("["); for(int r = 0; r<grid.length; r++){ if(r!=0){ sb.append(", "); } sb.append(grid[r][c]); } sb.append("]"); if(rowMap.containsKey(sb.toString())){ count += rowMap.get(sb.toString()); } } return count; } } |