力扣: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;
    }
}
相关推荐
凯尔萨厮8 分钟前
Java学习笔记十五(GUI)
java·笔记·学习
落木萧萧82516 分钟前
MyBatis 关联查询的四种写法,为什么最后都变回了手写 XML
java·数据库·后端
csdn2015_16 分钟前
java springboot项目,接收到的参数多个逗号
java·开发语言·spring boot
cui_hao_nan17 分钟前
Spring AOP 自调用、代理与 private 方法引发的诡异 NPE
java·后端·spring·ai开发
lvwangshu24 分钟前
exBSGS 算法
数学·算法
不会就选b25 分钟前
算法日常・每日刷题--<贪心+大根堆>2
数据结构·算法
码艺-Alimjan27 分钟前
维吾尔语数字转文本
java·javascript·python·算法·go
AI服务老曹30 分钟前
算法任务配置完整流程:明厨亮灶项目从0到1怎么做 | AI视频分析算法实践
人工智能·算法·音视频
事圆则缓33 分钟前
Java 常见数据结构与 Android 使用场景
android·java·数据结构
hahaha601639 分钟前
HLS高层次综合设计--axi之burst纠偏
开发语言·算法·fpga开发·c#