第50天(中等题 数据结构)

打卡第五十天
2道中等题
image

题目:
image

思路:
image

代码:

class Solution {
public:int numOfSubarrays(vector<int>& arr) {const int MODULO = 1000000007;  int odd = 0, even = 1;          // odd: 奇数前缀数量,even: 偶数前缀数量int subarrays = 0;              // 奇数和子数组总数int sum = 0;                    // 当前前缀和int length = arr.size();        // 数组长度for (int i = 0; i < length; i++) {sum += arr[i];  // 更新前缀和subarrays = (subarrays + (sum % 2 == 0 ? odd : even)) % MODULO;// 如果当前前缀和是偶数,需要与奇数前缀配对,如果当前前缀和是奇数,需要与偶数前缀配对if (sum % 2 == 0) {// 更新奇偶前缀计数even++;  // 当前前缀和是偶数,偶数前缀数量+1} else {odd++;   // 当前前缀和是奇数,奇数前缀数量+1}}return subarrays;  // 返回结果}
};

耗时≈一小时 明天继续