Python 中连续数字的最大乘积

pythonserver side programmingprogramming更新于 2025/12/27 7:40:17

假设我们有两个数字 num 和 k,我们必须找到 num 中 k 个连续数字的最大乘积。我们必须记住,num 保证有 >= k 位数字。

因此,如果输入为 num = 52689762 和 k = 4,则输出将为 3024,4 个连续数字的最大乘积为 (8*9*7*6) = 3024。

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

  • largest := 0
  • cand := 1
  • while (quotient of num/10)^(k-1) > 0,执行
    • 数字 := (nums 的最后一位数字)^k
    • cand := 1
    • 当数字 > 0 时,执行
      • cand := cand * (数字 mod 10)
      • 如果 cand 与 0 相同,则
        • 退出循环
      • 数字 := 数字的商 / 10
    • 最大 := 最大和 cand 的最大值
    • num := nums 的商 / 10
  • 返回 largest

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

示例

class Solution:
   def solve(self, num, k):
      largest = 0
      while num // 10 ** (k - 1) > 0:
         digits = num % 10 ** k
         cand = 1
         while digits > 0:
            cand *= digits % 10
            if cand == 0:
               break
               digits //= 10
               largest = max(largest, cand)
               num //= 10
      return largest
ob = Solution()
num = 52689762
k = 4
print(ob.solve(num,k))

输入

52689762, 4

输出

3024

相关文章


有用资源