Python程式:查詢和能被k整除的連續子序列個數
假設我們有一個數組nums和一個值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
- 返回r
示例
讓我們看看下面的實現,以便更好地理解:
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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP