[LeetCode] 3095. Shortest Subarray With OR at Least K I

Chobby·2025년 12월 19일

LeetCode

목록 보기
853/981

😎풀이

  1. nums 순회
    1-1. 현재 수를 통해 OR 연산을 누적으로 수행
    1-2. 누적된 값이 k 이상이 될 경우 현재 길이 확인
    1-3. 최소 길이 갱신
  2. 만일, 부분 배열의 OR 연산으로 k 이상의 수를 만들 수 없을 경우 -1 반환
  3. 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
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글