当前位置: 首页 > article >正文

力扣3128. 直角三角形

力扣3128. 直角三角形

题目解析及思路

题目要求找到矩阵中的直角三角形,不必相邻

套路:三个点**枚举(中间)**直角顶点更容易计算

对于(i,j)的直角顶点,构成直角三角形有多少个?

设第 i 行有 rowSum 个 1,第 j 列有 colSum 个 1。根据乘法原理,直角顶点为 (i,j) 的「直角三角形」有

(rowSum−1)⋅(colSum−1)

那么也就是说我们要求出rowSum和colSum,再通过乘法原理计算答案即可

实现见代码

代码

class Solution {
public:
    long long numberOfRightTriangles(vector<vector<int>>& grid) {
        //n为列数
        int n = grid[0].size();
        //提前-1
        vector<int> col_sum(n,-1);
        for(auto &row : grid)
            //遍历每一列 再对应列+=row[j]
            for(int j=0;j<n;j++)
                col_sum[j] += row[j];

        long long ans = 0;
        for(auto &row : grid)
        {
            //reduce求和,同样提前-1
            int row_sum = reduce(row.begin(), row.end()) - 1;
            for(int j=0;j<n;j++)
                //枚举当前点作为直角顶点
                if(row[j] == 1)
                    ans += row_sum * col_sum[j];
        }
        return ans;
    }
};

http://www.kler.cn/news/342062.html

相关文章:

  • yjs12——pandas缺失值的处理
  • JSONL 文件的检查和修订器
  • openEuler 24.03 (LTS) 部署 K8s(v1.31.1) 高可用集群(Kubespray Ansible 方式)
  • 手把手教你 vim 多行操作
  • ## jupyter_server
  • mysql对某个数据库的所有表做精准的行数查询,做主从数据库比对
  • 请求响应-08.响应-案例
  • 基于SpringBoot+Vue的网约车管理系统
  • JAVA 多线程入门例子:CountDownLatch
  • 宠物空气净化器哪个牌子吸毛好?希喂、IAM、352真实测评
  • python 实现FP GraphMiner算法
  • Word页眉内容自动填充为章节标题
  • 【redis学习篇1】redis基本常用命令
  • Django学习笔记九:RESTAPI添加用户认证和授权
  • 在thinkphp中发送http请求
  • 5个免费ppt模板网站推荐!轻松搞定职场ppt制作!
  • 【C++】多肽
  • 网关在不同行业自动化生产线的应用
  • 【Vue】vue-admin-template项目搭建
  • 计算机网络803-(4)网络层