Python 中相鄰數字的最大乘積


假設我們有兩個數字:num 和 k,我們要在 num 中找出 k 個連續數字的最大乘積。請記住,num 肯定有 >= k 個數字。

因此,如果輸入類似 num = 52689762,k = 4,則輸出將為 3024,4 個連續數字的最大乘積為 (8*9*7*6) = 3024。

為了解決這個問題,我們將按照以下步驟操作:

  • largest := 0
  • cand := 1
  • while (num/10)^(k-1) > 0,執行
    • digits := (nums 的最後一位數字)^k
    • cand := 1
    • while digits > 0,執行
      • cand := cand * (digits mod 10)
      • 如果 cand 為 0,則
        • 退出迴圈
      • digits := digits / 10 的商
    • largest := largest 和 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

更新日期:2020-09-23

304 次瀏覽

開啟你的 職業生涯

完成課程,獲得認證

開始吧
廣告
© . All rights reserved.