Java
/**
* 位运算;数组;滑动窗口
*/
class Solution {
public int minimumSubarrayLength(int[] nums, int k) {
int cnt = Integer.MAX_VALUE;
for (int l = 0; l < nums.length; l++) {
int val = 0;
for (int r = l; r < nums.length; r++) {
val |= nums[r];
if (val >= k) {
cnt = Math.min(cnt, r - l + 1);
break;
}
}
}
if (cnt == Integer.MAX_VALUE) {
return -1;
}
return cnt;
}
}
Go
import "math"
func minimumSubarrayLength(nums []int, k int) int {
cnt := math.MaxInt64
for l := 0; l < len(nums); l++ {
val := 0
for r := l; r < len(nums); r++ {
val |= nums[r]
if val >= k {
cnt = min(cnt, r-l+1)
break
}
}
}
if cnt == math.MaxInt64 {
return -1
}
return cnt
}