检查是否可以在 Python 中以相等的总和划分 k 个子数组

假设我们有一个名为 nums 的数字数组,并且还有另一个值 K。我们必须检查是否可以将数组 nums 划分为 K 个连续的子数组,使得每个子数组的元素和相等。

因此,如果输入类似于 nums = [2, 5, 3, 4, 7] k = 3,那么输出将为 True,因为我们可以进行三个分区,如 [(2, 5), (3, 4), (7)] 都有相等的和 7。

示例

让我们看看以下实现以获得更好的理解 -

def solve(nums, k):

   n = len(nums)

   cumul_sum = [0 for i in range(n)]

   cumul_sum[0] = nums[0]

   for i in range(1, n):

      cumul_sum[i] = cumul_sum[i - 1] + nums[i]

   total_sum = cumul_sum[n - 1]

   if total_sum % k != 0:

      return False

   count = 0

   pos = -1

   for i in range(n):

      if pos == -1:

         sub = 0

      else:

         sub = cumul_sum[pos]

      if cumul_sum[i] - sub == total_sum / k:

         pos = i

         count += 1

      elif cumul_sum[i] - cumul_sum[pos] > total_sum / k:

         break

   return count == k

nums = [2, 5, 3, 4, 7]

k = 3

print(solve(nums, k))

输入

[2, 5, 3, 4, 7], 3
输出结果
True

以上是 检查是否可以在 Python 中以相等的总和划分 k 个子数组 的全部内容, 来源链接: utcz.com/z/343879.html

回到顶部