在Python中查找最大的可被K整除的子序列和的程序

在Python中查找最大的可被K整除的子序列和的程序

假设我们有一个非负数的列表,以及一个正值k。我们必须找到最大的子序列数字之和,使其可被k整除。

因此,如果输入为nums = [4,6,8,2],k = 2,那么输出将是20。

整个数组的总和为20,可被2整除。

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

  • numsSum:获取输入列表nums中的值的总和

  • remainder:numsSum mod k

  • 如果remainder与0相同,则

    • 返回numsSum
  • 对nums列表进行排序

  • 对于nums中的每个数字组合tpl。做以下操作

    • subSeqSum:sum(tpl)

    • 如果subSeqSum mod k与remainder相同,则

      • 返回numsSum-subSeqSum
  • 返回0

请看以下实现以获得更好的理解

例子

from itertools import chain, combinations
class Solution:
   def solve(self, nums, k):
      numsSum = sum(nums)
      remainder = numsSum % k
      if remainder == 0:
         return numsSum
      nums.sort()
      for tpl in chain.from_iterable(combinations(nums, r) for r in range(1, len(nums) + 1)):
         subSeqSum = sum(tpl)
         if subSeqSum % k == remainder:
            return numsSum - subSeqSum
      return 0
ob1 = Solution()
print(ob1.solve([4, 6, 8, 2], 2))

输入

[4, 6, 8, 2],2

输出

20

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程