leetcode第114场双周赛 - 3 贪心
2871. 将数组分割成最多数目的子数组
位与肯定是越来越小的
子数组的位与结果 \(\ge\) 整个数组的位与结果
当整体位与结果不为 0 时,最小的划分方法就是划分整体;
当整体位与结果为 0 时,仅我们可以从前往后遍历,每位与一次 0 即贡献一次答案,如果末尾有不为 0 的子数组可以合并到前面最后一个上去
class Solution {
public:
int maxSubarrays(vector<int>& n) {
int ans = 0, a = -1;
for(auto x : n){
a &= x;
if(a == 0){
++ ans; a = -1;
}
}
return max(ans, 1);
}
};
本文来自博客园,作者:Qiansui,转载请注明原文链接:https://www.cnblogs.com/Qiansui/p/17744190.html