2025-03-18 Daily Challenge
Today I have done leetcode's March LeetCoding Challenge with cpp
.
March LeetCoding Challenge 18
Description
Longest Nice Subarray
You are given an array nums
consisting of positive integers.
We call a subarray of nums
nice if the bitwise AND of every pair of elements that are in different positions in the subarray is equal to 0
.
Return the length of the longest nice subarray.
A subarray is a contiguous part of an array.
Note that subarrays of length 1
are always considered nice.
Example 1:
Input: nums = [1,3,8,48,10] Output: 3 Explanation: The longest nice subarray is [3,8,48]. This subarray satisfies the conditions: - 3 AND 8 = 0. - 3 AND 48 = 0. - 8 AND 48 = 0. It can be proven that no longer nice subarray can be obtained, so we return 3.
Example 2:
Input: nums = [3,1,5,11,13] Output: 1 Explanation: The length of the longest nice subarray is 1. Any subarray of length 1 can be chosen.
Constraints:
1 <= nums.length <= 105
1 <= nums[i] <= 109
Solution
class Solution {
public:
int longestNiceSubarray(vector<int>& nums) {
int answer = 0;
int begin = 0;
int mask = 0;
int len = nums.size();
for(int end = 0; end < len; ++end) {
while(mask & nums[end]) {
mask ^= nums[begin];
begin += 1;
}
mask ^= nums[end];
answer = max(answer, end - begin + 1);
}
return answer;
}
};
// Accepted
// 65/65 cases passed (0 ms)
// Your runtime beats 100 % of cpp submissions
// Your memory usage beats 28.44 % of cpp submissions (61 MB)