题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个二维数组,数字只会是 0 或 1,求其中直角三角形的数目,直角三角形的三个元素要求以直角中心处为核心,横向和纵向有 1 即可。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
def numberOfRightTriangles(self, grid: List[List[int]]) -> int:
col_sum = [sum(col) - 1 for col in zip(*grid)] # 先将 grid 按行分开,然后用 zip 将每行的相同次序元素组合,形成遍历列的效果
ans = 0
for row in grid:
row_sum = sum(row)-1
ans += row_sum * sum(c for x, c in zip(row, col_sum) if x)
return ans

# class Solution:
# def numberOfRightTriangles(self, grid: List[List[int]]) -> int:
# col_sum = [sum(col) - 1 for col in zip(*grid)]
# ans = 0
# for row in grid:
# row_sum = sum(row)-1
# for x, c in zip(row, col_sum):
# if x==1:
# ans += row_sum * c

# return ans