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
廣告