⬆︎
×

[LC] 3095 Shortest Subarray With OR at Least K I

Hyplus目录

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
}

发表评论