使用Python检查数组对是否能被k整除的程序

使用Python检查数组对是否能被k整除的程序

假设我们有一个称为nums的数组,该数组包含偶数个元素,并有另一个值k。我们必须将nums分成正好n / 2个对,使得每对的总和可以被k整除。如果我们可以这样做,则返回true;否则返回false。

因此,如果输入为nums = [9,5,3,4,7,10,20,8] k = 3,则输出将为True,因为我们可以组成(9,3)、(5,7)、(4,20)、(8,10)这些对,所有对的和都可以被3整除。

要解决这个问题,我们将遵循以下步骤 –

  • dp:一个新的列表

  • 计数:= 0

  • 对于nums中的每个x,做

    • t:= k-(x mod k)

    • 如果t与k相同,则

      • 计数:=计数+ 1
    • 否则,
      • 在dp末尾插入t
  • 如果计数除以2不等于0,则
    • 返回False
  • 对列表dp进行排序

  • 低值:= 0

  • 高值:= dp的大小-1

  • 当低值<高值时,做

    • 如果dp[low] + dp[high]与k不同,则
      • 返回False
    • 低值:=低值+ 1

    • 高值:=高值 – 1

  • 返回True

让我们看下面的实现,以便更好地理解 –

示例

def solve(nums, k):
   dp=[]
   count=0
   for x in nums:
      t=k-(x % k)
      if t == k:
         count+=1
      else:
         dp.append(t)
   if count % 2 != 0:
      return False
   dp.sort()
   low = 0
   high = len(dp)-1
   while low < high:
      if dp[low] + dp[high] != k:
         return False
      low += 1
      high -= 1
   return True
nums = [9,5,3,4,7,10,20,8]
k = 3
print(solve(nums, k))

输入

[9,5,3,4,7,10,20,8],3

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程