สมมติว่าเรามีตัวเลขอาร์เรย์และค่า k เราต้องหาจำนวนลำดับที่ต่อเนื่องกันซึ่งผลรวมหารด้วย k ลงตัว
ดังนั้น ถ้าอินพุตเป็นเหมือน k =3 nums =[1,2,3,4,1] ผลลัพธ์จะเป็น 4 เพราะส่วนย่อยคือ [3], [1,2], [1,2,3 ] และ [2,3,4].
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- x :=อาร์เรย์ขนาด k และเติม 0
- x[0] :=1
- r:=0, s:=0
- สำหรับแต่ละองค์ประกอบเป็น nums ทำ
- s :=(s + elem) mod k
- r :=r + x[s]
- x[s] :=x[s] + 1
- คืนสินค้า
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(k, nums): x = [0]*k x[0] = 1 r=s=0 for elem in nums: s = (s+elem) % k r += x[s] x[s] += 1 return r k = 3 nums = [1,2,3,4,1] print(solve(k, nums))
อินพุต
3, [1,2,3,4,1]
ผลลัพธ์
4