Re: [閒聊] 每日leetcode
https://leetcode.com/problems/number-of-sub-arrays-with-odd-sum
1524. Number of Sub-arrays With Odd Sum
給你一個陣列,求出共有幾個子陣列和為奇數,因為數字很大所以要模10^9+7。
思路:
假設初始陣列為 [1] 我們加入一個數字5之後會產生 [1,5],[5]兩個子陣列,再加入
一個數字7之後會產生 [1,5,7],[5,7],[7],我們可以發現就是在原先的陣列後面附加
一個數字,所以我們只要統計"當前所有的子陣列共有幾個奇數和/偶數和"然後每次更
新的時候,透過當前的數是奇數還是偶數更新奇偶的數量:
(奇+奇=偶, 偶+奇=奇, 奇+奇=偶, 偶+偶=偶)
把過程中的奇數和子陣列數量相加即可。
java code:
-------------------------------------------------
class Solution {
final int MOD = (int) 1e9 + 7;
public int numOfSubarrays(int[] nums) {
int res = 0;
int odd = 0;
int even = 0;
for (int num : nums) {
if (num % 2 == 0) {
even = even + 1;
} else {
int tmp = odd;
odd = even + 1;
even = tmp;
}
res = (res + odd) % MOD;
}
return res;
}
}
-------------------------------------------------
--
https://i.imgur.com/yRXNquY.jpeg

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.158.101.161 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1740494080.A.70B.html
推
02/25 23:16,
9月前
, 1F
02/25 23:16, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1348 之 1552 篇):