【问题标题】:count the number of subarray in binary array in which number of zero is more than one计算二进制数组中零个数大于一的子数组的数量
【发布时间】:2021-08-05 13:24:35
【问题描述】:

给定一个二进制数组。找出零个数大于一的子数组的个数?

我已经设法制定了一个简单的 O(N2) 解决方案,是否有可能变得更好?

【问题讨论】:

  • 展示你现在拥有的东西。
  • 请展示您已经找到的内容。 “子数组的数量”是什么意思?一个小的输入示例可能会使您的问题更清楚。
  • 你的意思是“零的个数大于1”还是“零的个数大于一”?

标签: algorithm sub-array


【解决方案1】:

你调用的F[i]是从a[1]到a[i]的bit 1的个数; G[i] 是从 a[1] 到 a[i] 的位 0 的数量。所以我们必须找到对 i,j (0F[j]-F[i]

它可能需要 O(N^2),但如果我们转换该表达式:

F[j] - F[i]

F[j] - G[j]

如果我们称C[i] = F[i]- G[i],那么:

(*) C[j]

问题会变成这样:找出i 和C[i] > C[j]的对(i, j)的数量。我们可以用大约 O(NlogN)

轻松解决二叉搜索树

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多