สมมติว่าเรามีตัวเลขสองตัวคือ num และ k เราต้องหาผลคูณที่ใหญ่ที่สุดของ k contiguousdigits เป็น num เราต้องจำเอาไว้ว่า num นั้นรับประกันว่ามี>=k หลัก
ดังนั้น หากอินพุตเท่ากับ num =52689762 และ k =4 ผลลัพธ์จะเป็น 3024 ผลคูณที่ใหญ่ที่สุดของ 4 หลักติดต่อกันคือ (8*9*7*6) =3024
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ใหญ่สุด :=0
- แคน :=1
- ในขณะที่ (ผลหารของ num/10)^(k-1)> 0, ทำ
- หลัก :=(หลักสุดท้ายของ nums)^k
- แคน :=1
- ในขณะที่ตัวเลข> 0, ทำ
- cand :=cand * (mod 10 หลัก)
- ถ้าแคนด์มีค่าเท่ากับ 0 แล้ว
- ออกมาจากวงจร
- หลัก :=ผลหารของหลัก / 10
- ที่ใหญ่ที่สุด :=สูงสุดของที่ใหญ่ที่สุดและแคนด์
- num :=ผลหารของ nums / 10
- ผลตอบแทนสูงสุด
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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