Re: [閒聊] 每日LeetCode已回收
2348. Number of Zero-Filled Subarrays
給你一個陣列表示的序列,求出元素連續為0的子序列總數共有多少個。
Example:
Input: nums = [0,0,0,2,0,0]
Output: 9
Explanation:
[0]子序列共有5個
[0,0]共有3個,
[0,0,0]共有1個
總共有9個
思路:
1.觀察[0] -> [0,0] 、[0,0] -> [0,0,0] 產生的子序列數量變化,我們發現每多出一
個0,都可以和先前的子序列成為一個新的子序列。
2.因為1的關係我們得知這個問題有最佳子結構,所以可以用動態規劃來求解,狀態轉移
方程:dp[i] = dp[i - 1] + i ,dp[i]表示連續i個0可以組成的子序列數量。
3.遇到連續0就不斷的累加,否則把0的數量重置,遍歷一遍之後就可以得到解了。
Java Code:
--------------------------------------------
class Solution {
public long zeroFilledSubarray(int[] nums) {
long ans = 0;
int count = 0;
for (int num : nums) {
if (num == 0) {
count++;
ans += count;
} else {
count = 0;
}
}
return ans;
}
}
--------------------------------------------
--
https://i.imgur.com/CBMFmWk.jpg

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.100.75.86 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1679415271.A.E59.html
推
03/22 00:16,
2年前
, 1F
03/22 00:16, 1F
→
03/22 00:21,
2年前
, 2F
03/22 00:21, 2F
推
03/22 00:42,
2年前
, 3F
03/22 00:42, 3F
討論串 (同標題文章)
完整討論串 (本文為第 268 之 719 篇):