在Python中查找大小至少为2的子列表,其总和为k的倍数

在Python中查找大小至少为2的子列表,其总和为k的倍数

假设我们有一个名为nums的非负数列表和另一个正值k。我们必须查找是否存在长度至少为2的子列表,其总和是k的倍数。

因此,如果输入内容为nums = [12,6,3,4] k = 5,则输出将是True,因为子列表[12,3]之和为15,可被5整除。

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

  • 合计:= 0
  • m:=一个新映射
  • m [0]:=-1
  • for i 在范围0到nums的大小循环执行以下操作:
    • 合计:= sum + nums[i]
    • 合计:= 合计 mod k
    • 如果总和出现在m中,则
      • 如果i-m [sum] > = 2,则
      • 返回True
    • 否则,
      • m [sum]: = i
  • 返回False

看以下实现以更好地理解-

更多Python相关文章,请阅读:Python 教程

示例

class Solution:
   def solve(self, nums, k):
      sum = 0
      m = {}
      m[0] = -1
      for i in range(0, len(nums)):
         sum += nums[i]
         sum %= k
         if sum in m:
            if i - m[sum] >= 2:
               return True
         else:
            m[sum] = i
      return False
ob = Solution()
nums = [12, 6, 3, 4]
k = 5
print(ob.solve(nums, k))

输入

[12, 6, 3, 4],5

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程