力扣: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;
    }
}
相关推荐
疯狂打码的少年15 小时前
【数据结构】队列的应用:循环队列
数据结构·笔记·算法
evans在进步15 小时前
LeetCode 17:电话号码的字母组合——Java DFS 回溯法详解
java·leetcode·深度优先
2401_8504811715 小时前
UVA10391
java
UQR15 小时前
一、Java基础高频面试题
java·开发语言
AC赳赳老秦15 小时前
网页公开附件自动采集:OpenClaw 批量下载页面内嵌 Word/Excel 附件,统一格式后结构化入库
java·python·word·php·excel·deepseek·openclaw
Winner_hwx15 小时前
python拓展
算法
上海云盾商务经理杨杨15 小时前
Tomcat 弱配置漏洞渗透实战!批量 getshell 高频漏洞
java·web安全·tomcat
TAN-90°-15 小时前
Deep Learning for Computer Vision——Image Classification with Linear Classifiers
python·深度学习·算法·计算机视觉·线性回归
10mAh16 小时前
【Linux】error while loading shared libraries 怎么解决?——ldd、RPATH 与动态链接排错
java·linux·前端
深念Y16 小时前
stable-diffusion.cpp 的 FLUX.2 Klein 9B 分步
java·前端·数据库