力扣-确定两个字符串是否接近

思路分析

  1. 统计每行的出现次数:将每行数组转换为「可哈希的键」(如字符串 / 列表),用哈希表记录每行出现的次数;
  2. 遍历每列匹配行:将每列数组转换为相同格式的键,去哈希表中查询该键的出现次数,累加所有匹配次数即为答案。

代码实现

java 复制代码
public int equalPairs(int[][] grid){
    int result = 0;
    Map<List<Integer>, Integer> map = new HashMap<>();
    // 保存所有的行
    for (int i = 0; i < grid.length; i++) {
        List<Integer> list = new ArrayList<>();
        for (int num = 0; num < grid[i].length; num++) {
            list.add(grid[i][num]);
        }
        map.put(list, map.getOrDefault(list, 0) + 1);
    }
    // 遍历所有的列
    for (int col = 0; col < grid[0].length; col++) {
        List<Integer> list = new ArrayList<>();
        for (int j = 0; j < grid.length; j++) {
            list.add(grid[j][col]);
        }
        result += map.getOrDefault(list, 0);
    }
    return result;
}

复杂度分析

  • 整体时间复杂度:O(n2)(最优,无法低于此复杂度,因为必须遍历所有行列元素);
  • 空间复杂度:O(n2)(最坏情况所有行都不同,哈希表存储 n 个长度为 n 的行)。
相关推荐
Gorway6 小时前
解析残差网络 (ResNet)
算法
拖拉斯旋风6 小时前
LeetCode 经典算法题解析:优先队列与广度优先搜索的巧妙应用
算法
Wect6 小时前
LeetCode 207. 课程表:两种解法(BFS+DFS)详细解析
前端·算法·typescript
灵感__idea20 小时前
Hello 算法:众里寻她千“百度”
前端·javascript·算法
Wect1 天前
LeetCode 130. 被围绕的区域:两种解法详解(BFS/DFS)
前端·算法·typescript
NAGNIP2 天前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
颜酱2 天前
单调栈:从模板到实战
javascript·后端·算法
CoovallyAIHub2 天前
仿生学突破:SILD模型如何让无人机在电力线迷宫中发现“隐形威胁”
深度学习·算法·计算机视觉
CoovallyAIHub2 天前
从春晚机器人到零样本革命:YOLO26-Pose姿态估计实战指南
深度学习·算法·计算机视觉
CoovallyAIHub2 天前
Le-DETR:省80%预训练数据,这个实时检测Transformer刷新SOTA|Georgia Tech & 北交大
深度学习·算法·计算机视觉