题目:
给你一个由 正 整数组成的数组 nums 。
如果 nums 的子数组中位于 不同 位置的每对元素按位 与(AND) 运算的结果等于 0 ,则称该子数组为 优雅 子数组。
返回 最长 的优雅子数组的长度。
子数组 是数组中的一个 连续 部分。
注意: 长度为 1 的子数组始终视作优雅子数组。
算法:
方法一:模拟
注意题意,是连续子数组,nums[i] 最长有30位数,那么我们暴力枚举即可。
func longestNiceSubarray(nums []int) int {
cnt := 0
for i, or := range nums {
j := i - 1
for ; j >= 0 && (nums[j] & or == 0); j -- {
or = or | nums[j]
}
if i - j > cnt {
cnt = i - j
}
}
return cnt
}