#Q1051. 或值至少为K的最短数组

或值至少为K的最短数组

题目背景

小明和小嘉一起做数学题,遇到了一个非常有意思的题目:找到一些数字中的或值至少为 kk 的最短连续数组。

题目描述

根据输入、输出要求,输入两个正整数N, kN,\ k,随后输入 NN 个正整数。输出或值至少为 kk 的最短连续数组的长度。

如果一个数组中所有元素的按位或运算 OROR 的值 至少kk, 那么我们称这个数组是 特别的

我们所求的正是在数组中最短的特别的子数组的长度,如果特别子数组不存在,那么输出-1

输入要求

输入两行: 第一行, 输入两个数 N kN\ k; 第二行, 输入 NN 个正整数。

输出要求

输出一行,输出符合题意的最短子数组长度或-1。

样例

3 2
1 2 3
1
解释:
子数组 [3] 的按位或值为3, 因此我们输出长度1。注意: [2] 也是一个特别子数组。
3 10
2 1 8
3
解释:
子数组 [2, 1, 8] 的按位或值为11, 因此我们输出长度3。
2 0
1 2
1
解释:
子数组 [1] 的按位或值为1, 因此我们输出长度1。

数据规模与约定

100%100\%的输入数据,满足:

1  nums.length  501\ \leq\ nums.length\ \leq\ 50 \\ 0  nums[i]  500\ \leq\ nums[i]\ \leq\ 50 \\ 0  k < 640\ \leq\ k \ <\ 64 \\