2025-02-25 Daily Challenge
Today I have done leetcode's February LeetCoding Challenge with cpp
.
February LeetCoding Challenge 25
Description
Number of Sub-arrays With Odd Sum
Given an array of integers arr
, return the number of subarrays with an odd sum.
Since the answer can be very large, return it modulo 109 + 7
.
Example 1:
Input: arr = [1,3,5] Output: 4 Explanation: All subarrays are [[1],[1,3],[1,3,5],[3],[3,5],[5]] All sub-arrays sum are [1,4,9,3,8,5]. Odd sums are [1,9,3,5] so the answer is 4.
Example 2:
Input: arr = [2,4,6] Output: 0 Explanation: All subarrays are [[2],[2,4],[2,4,6],[4],[4,6],[6]] All sub-arrays sum are [2,6,12,4,10,6]. All sub-arrays have even sum and the answer is 0.
Example 3:
Input: arr = [1,2,3,4,5,6,7] Output: 16
Constraints:
1 <= arr.length <= 105
1 <= arr[i] <= 100
Solution
class Solution {
const int MOD = 1e9 + 7;
public:
int numOfSubarrays(vector<int>& arr) {
for(auto &n : arr) {
n ^= (n ^ (n & 1));
}
for(int i = 1; i < arr.size(); ++i) {
arr[i] ^= arr[i - 1];
}
int ones = 0;
int zeros = 1;
int answer = 0;
for(auto n : arr) {
if(n) {
answer += zeros;
ones += 1;
} else {
answer += ones;
zeros += 1;
}
answer %= MOD;
}
return answer;
}
};
// Accepted
// 151/151 cases passed (2 ms)
// Your runtime beats 76.78 % of cpp submissions
// Your memory usage beats 55.17 % of cpp submissions (112 MB)