Input: nums =[1,2,3], k =2Output: 1Explanation:
The subarray `[3]` has `OR` value of `3`. Hence, we return`1`.Note that `[2]`is also a special subarray.
#include<vector>#include<algorithm>usingnamespace std;
classSolution {
public:int minimumSubarrayLength(vector<int>& nums, int k) {
int n = nums.size(), ans = n+1;
for (int i =0; i < n; ++i) {
int cur =0;
for (int j = i; j < n; ++j) {
cur |= nums[j];
if (cur >= k) {
ans = min(ans, j-i+1);
break;
}
}
}
return ans == n+1?-1: ans;
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
classSolution {
publicintminimumSubarrayLength(int[] nums, int k) {
int n = nums.length, ans = n+1;
for (int i = 0; i < n; ++i) {
int cur = 0;
for (int j = i; j < n; ++j) {
cur |= nums[j];
if (cur >= k) {
ans = Math.min(ans, j-i+1);
break;
}
}
}
return ans == n+1 ?-1 : ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
classSolution:
defminimumSubarrayLength(self, nums, k):
n = len(nums)
ans = n+1for i in range(n):
cur =0for j in range(i, n):
cur |= nums[j]
if cur >= k:
ans = min(ans, j-i+1)
breakreturn-1if ans == n+1else ans