【发布时间】:2021-06-09 19:53:09
【问题描述】:
我正在做一个 leetcode 问题,在查看解决方案时,我被解决方案中的某一行吓傻了。特别是leetcode问题是https://leetcode.com/problems/binary-subarrays-with-sum/
解决办法:
class Solution:
def numSubarraysWithSum(self, A: List[int], S: int) -> int:
res = 0
sm = 0
sums = collections.defaultdict(int)
for a in A:
sm += a
res += sums[sm - S] + (sm == S)
sums[sm] += 1
return res
我了解除此行之外的所有内容:
res += sums[sm - S] + (sm == S)
我以前从未见过加法运算中的条件。
【问题讨论】:
-
==产生一个布尔值,它的行为恰好像 1 或 0... -
试试
print(0 + (sm == S))看看会发生什么? -
向我们确切地向我们展示您在跟踪此代码中的中间表达式时所不理解的内容。 “向我解释这个代码块”超出了 Stack Overflow 的范围:解构复合表达式并告诉我们你对其中一两个操作的不理解之处。这是一个布尔比较,不是条件流。
标签: python data-structures hashtable