leetcode 連續的子陣列和

2021-10-23 15:28:59 字數 1229 閱讀 3075

給定乙個包含 非負數 的陣列和乙個目標 整數 k,編寫乙個函式來判斷該陣列是否含有連續的子陣列,其大小至少為 2,且總和為 k 的倍數,即總和為 n*k,其中 n 也是乙個整數。

示例 1:

輸入:[23,2,4,6,7], k = 6

輸出:true

解釋:[2,4] 是乙個大小為 2 的子陣列,並且和為 6。

示例 2:

輸入:[23,2,6,4,7], k = 6

輸出:true

解釋:[23,2,6,4,7]是大小為 5 的子陣列,並且和為 42。

說明:

陣列的長度不會超過 10,000 。

你可以認為所有數字總和在 32 位有符號整數範圍內

用類似於暴力求解和動態規劃的方法:

轉移方程:

dp[i] = dp[i-1] + nums[i]

class

solution

:def

checksubarraysum

(self, nums, k)

:# 特殊情況判斷

iflen

(nums)

<=1:

return

false

n =len(nums)

dp =[0

]* n # 定義dp

# 自底向上

for i in

range(1

,n):

dp[i]

= dp[i-1]

+ nums[i]

# 遍歷總和

for i in

range

(n-1):

for j in

range

(i+1

, n)

:# 區間差

sums = dp[j]

- dp[i]

+ nums[i]

# 判斷是否滿足條件

if k ==0:

# 考慮極端條件

if sums ==0:

# 滿足條件就返回

return

true

else

:if sums % k ==0:

# 滿足條件就返回

return

true

return

false

Leetcode 連續子陣列的最大和

leetcode 輸入乙個整型陣列,陣列裡有正數也有負數。陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 示例1 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。貪心演算法 每一步都求出最優...

leetcode 連續子陣列的最大和

該題要求時間複雜度為 n 對於連續子陣列最大和問題,使用分治演算法時間複雜度為 nlgn 而使用動態規劃演算法時間複雜度為 n 因此本題考慮使用動態規劃演算法求解 接下來分析該問題的最優子結構,假設當前陣列a 0 n 的連續子陣列最大和為s ns n sn 它與陣列a 0 n 1 的連續子陣列最大和...

連續子陣列的最小和

連續子陣列的最大和的問題相信大家都不會陌生了,如下 int maxsubsum int arr,int len 如果累加和出現小於0的情況,則和最大的子串行肯定不可能包含前面的元素,這時將累加和置0,從下個元素重新開始累加 else if thissum 0 return maxsum 連續子陣列的...