力扣:3128. 直角三角形(Java)

目录

题目描述:

给你一个二维 boolean 矩阵 grid 。

请你返回使用 grid 中的 3 个元素可以构建的 直角三角形 数目,且满足 3 个元素值 都 为 1 。

注意:

如果 grid 中 3 个元素满足:一个元素与另一个元素在 同一行,同时与第三个元素在 同一列 ,那么这 3 个元素称为一个 直角三角形 。这 3 个元素互相之间不需要相邻。

示例 :

输入:grid = [[0,1,0],[0,1,1],[0,1,0]]

输出:2

解释:

有 2 个直角三角形。

代码实现:

java 复制代码
class Solution {
    public long numberOfRightTriangles(int[][] grid) {
        int m = grid.length;// 二维矩阵的行数
        int n = grid[0].length;// 二维矩阵的列数
        int[] cols = new int[n];// 计算每一列的和
        for (int j = 0; j < n; j++) {// 先遍历列
            for (int i = 0; i < m; i++) {// 再遍历行
                cols[j] += grid[i][j];
            }
        }
        long res = 0;// 最终结果
        for (int i = 0; i < m; i++) {
            int rows = Arrays.stream(grid[i]).sum();// 计算每一行之和
            for (int j = 0; j < n; j++) {
                if (grid[i][j] == 1) {
                    // 如果当前元素存在两条直角边
                    res += (rows - 1) * (cols[j] - 1);// 将除元素本身的两组行,列元素集合进行组合,然后累加
                }
            }
        }
        return res;
    }
}
相关推荐
LYFlied4 分钟前
【每日算法】LeetCode 104. 二叉树的最大深度
前端·算法·leetcode·面试·职场和发展
arron88995 分钟前
以目标检测基础知识学习分割模型算法
学习·算法·目标检测
凤凰战士芭比Q6 分钟前
Jenkins(Pipeline job)
java·servlet·jenkins
IT方大同7 分钟前
循环结构的功能
c语言·数据结构·算法
代码不停16 分钟前
BFS解决拓扑排序和FloodFill问题
java·算法·宽度优先
TL滕17 分钟前
从0开始学算法——第二十一天(复杂链表问题)
笔记·学习·算法
Chengbei1122 分钟前
CVE-2025-24813 Tomcat 最新 RCE 分析复现
java·安全·web安全·网络安全·tomcat·系统安全·网络攻击模型
AAA简单玩转程序设计26 分钟前
救命!Java 进阶居然还在考这些“小儿科”?
java·前端
sin_hielo29 分钟前
leetcode 955
数据结构·算法·leetcode
总是学不会.32 分钟前
【JUC编程】多线程学习大纲
java·后端·开发