对于每个(连续的)子数组 B = [A[i], A[i+1], ..., A[j]] ( i <= j),我们对 B 中的每个元素进行按位或操作,获得结果 A[i] | A[i+1] | ... | A...返回可能结果的数量。 (多次出现的结果在最终答案中仅计算一次。)
示例 1:
输入:[0]
输出:1
解释:
只有一个可能的结果 0 。...)
ans.insert(i);
}
return ans.size();
}
};
2.2 正解
上面解法忽略了一个条件,| 操作...数字不会减小,当 区间 [j, i] | 操作的结果 == [j, i-1] 的结果,那么 [j-1, i],[j-2, i]等往前的都不需要计算了,都是一样的结果,A[i] 的贡献 被 区间 [j,...[j, i-1] 的区间 | 和
arr[j] |= arr[i]; //现在 arr[j] 存储的是 [j, i] 的区间 | 和
ans.insert