检查Python数组是否可以分成两个子数组,使得它们的绝对差为K


假设我们得到一个包含整数的数组 "input_list"。问题是检查该数组是否可以分成两半,这两半的和的差等于数字n。数字n将预先给出。

因此,如果输入类似于 input_list= [9,2,5,6],n = 0,则输出将为“可能”。

为了解决这个问题,我们将遵循以下步骤:

  • list_total := input_list 值的总和
  • 如果 (list_total - n) mod 2 等于 1,则
    • 返回 "不可能"
  • val := (list_total - n) / 2
  • temp_sum := 0;
  • 对于 i 从 0 到 input_list 的大小,执行
    • temp_sum := temp_sum + input_list[i]
    • 如果 temp_sum 等于 val,则
      • 返回 "可能"
  • 返回 "不可能"

让我们看看下面的实现来更好地理解:

示例

在线演示

def solve(input_list,n):
   list_total = sum(input_list)
   if (list_total - n) % 2 == 1:
      return "Not Possible"
   val = (list_total - n) / 2
   temp_sum = 0;
   for i in range (0,len(input_list)):
      temp_sum += input_list[i]
      if (temp_sum == val):
         return "Possible"
   return "Not Possible"
input_list= [9,2,5,6]
n = 0
print(solve(input_list, n))

输入

[9,2,5,6], 0

输出

Possible

更新于:2020-12-30

74 次浏览

开启你的职业生涯

通过完成课程获得认证

开始
广告