
😎풀이
nums 순회
1-1. 현재 수를 통해 OR 연산을 누적으로 수행
1-2. 누적된 값이 k 이상이 될 경우 현재 길이 확인
1-3. 최소 길이 갱신
- 만일, 부분 배열의
OR 연산으로 k 이상의 수를 만들 수 없을 경우 -1 반환
k 이상의 수를 만드는 가장 짧은 부분 배열의 길이 반환
function minimumSubarrayLength(nums: number[], k: number): number {
const n = nums.length
let minLen = Infinity
for(let left = 0; left < n; left++) {
let bitwise = 0
for(let right = left; right < n; right++) {
bitwise |= nums[right]
if(bitwise < k) continue
const curLen = right - left + 1
minLen = Math.min(minLen, curLen)
break
}
}
if(minLen === Infinity) return -1
return minLen
};