Leetcode-3152 特殊数组 II
依旧前缀和,做的还是很不熟悉,链接如下3152. 特殊数组 II
我想着用位运算来判断相邻两个元素的奇偶情况,用&来判断结果为0就是奇偶相邻,后来发现自己考虑不周2&4的结果也为0,所以还是用了一个if else判断来。
我令cnt[0] = 0 ,cnt[1]=1;因为当 queries[i][0]==queries[i][1]时,也返回true。
然后就cnt[queries[i][1]+1] -cnt[queries[i][0]+1] == queries[i][1]-queries[i][0]时,返回true.
写的不够凝练,C++代码如下
class Solution {
public:vector<bool> isArraySpecial(vector<int>& nums, vector<vector<int>>& queries) {vector<int> cnt;cnt.resize(nums.size()+1);cnt[1] = 1;for(int i = 1;i<nums.size();i++){ if((nums[i]%2 == 0 && nums[i-1]%2 !=0)||(nums[i-1]%2 == 0 && nums[i]%2 !=0))cnt[i+1]+=cnt[i]+1;else cnt[i+1]+=cnt[i];}vector<bool> ans ;for(int i = 0; i<queries.size();i++){if(queries[i][0]==queries[i][1]){ans.push_back(true);continue;}if((cnt[queries[i][1]+1]-cnt[queries[i][0]+1]) == (queries[i][1]-queries[i][0]))ans.push_back(true);elseans.push_back(false);}return ans;}
};