a&b=0说明a和b的每一位都是一个0和一个1 不存在两个均为1的位次
a|0=a 0与任何数|都等于它本身
(mask)的作用:
担心两数的1在用一位导致mask覆盖了?
答:出现这种情况说明mask与nums j后就直接break
由:最长的优雅子数组长度为 1 ,任何长度为 1 的子数组都满足题目条件。
答:ans初始值为1;
class Solution {
public:int longestNiceSubarray(vector<int>& nums) {int ans=1;int n=nums.size();int mask=0;for(int i=0;i<n;i++){ mask=0;for(int j=i;j<n;j++){if(mask&nums[j])break;mask|=nums[j];ans=max(ans,j-i+1); }}return ans;}
};