【问题标题】:Trouble comprehending expression [duplicate]无法理解表达式[重复]
【发布时间】: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


【解决方案1】:

条件表达式计算为布尔值,在 Python 中只是 int 的子类型。 False 为 0,True 为 1,所以如果 sm 等于 S,则添加 sm == S 与添加 1 相同,否则添加 0。

【讨论】:

  • 我感觉它是这样工作的,谢谢你的澄清:D
  • 吹毛求疵:这是一个比较,而不是“条件表达式”。
猜你喜欢
  • 2014-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多