mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-10 18:48:13 +08:00
48 lines
2.5 KiB
HTML
48 lines
2.5 KiB
HTML
<p>给你一个长度为 <code>n</code> 下标从 <strong>0</strong> 开始的数组 <code>nums</code> ,数组中所有数字均为非负整数。对于 <code>0</code> 到 <code>n - 1</code> 之间的每一个下标 <code>i</code> ,你需要找出 <code>nums</code> 中一个 <strong>最小</strong> 非空子数组,它的起始位置为 <code>i</code> (包含这个位置),同时有 <strong>最大</strong> 的 <strong>按位或</strong><b>运算值</b> 。</p>
|
||
|
||
<ul>
|
||
<li>换言之,令 <code>B<sub>ij</sub></code> 表示子数组 <code>nums[i...j]</code> 的按位或运算的结果,你需要找到一个起始位置为 <code>i</code> 的最小子数组,这个子数组的按位或运算的结果等于 <code>max(B<sub>ik</sub>)</code> ,其中 <code>i <= k <= n - 1</code> 。</li>
|
||
</ul>
|
||
|
||
<p>一个数组的按位或运算值是这个数组里所有数字按位或运算的结果。</p>
|
||
|
||
<p>请你返回一个大小为 <code>n</code> 的整数数组<em> </em><code>answer</code>,其中<em> </em><code>answer[i]</code>是开始位置为 <code>i</code> ,按位或运算结果最大,且 <strong>最短</strong> 子数组的长度。</p>
|
||
|
||
<p><strong>子数组</strong> 是数组里一段连续非空元素组成的序列。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例 1:</strong></p>
|
||
|
||
<pre><b>输入:</b>nums = [1,0,2,1,3]
|
||
<b>输出:</b>[3,3,2,2,1]
|
||
<strong>解释:</strong>
|
||
任何位置开始,最大按位或运算的结果都是 3 。
|
||
- 下标 0 处,能得到结果 3 的最短子数组是 [1,0,2] 。
|
||
- 下标 1 处,能得到结果 3 的最短子数组是 [0,2,1] 。
|
||
- 下标 2 处,能得到结果 3 的最短子数组是 [2,1] 。
|
||
- 下标 3 处,能得到结果 3 的最短子数组是 [1,3] 。
|
||
- 下标 4 处,能得到结果 3 的最短子数组是 [3] 。
|
||
所以我们返回 [3,3,2,2,1] 。
|
||
</pre>
|
||
|
||
<p><strong>示例 2:</strong></p>
|
||
|
||
<pre><b>输入:</b>nums = [1,2]
|
||
<b>输出:</b>[2,1]
|
||
<strong>解释:
|
||
</strong>下标 0 处,能得到最大按位或运算值的最短子数组长度为 2 。
|
||
下标 1 处,能得到最大按位或运算值的最短子数组长度为 1 。
|
||
所以我们返回 [2,1] 。
|
||
</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</strong></p>
|
||
|
||
<ul>
|
||
<li><code>n == nums.length</code></li>
|
||
<li><code>1 <= n <= 10<sup>5</sup></code></li>
|
||
<li><code>0 <= nums[i] <= 10<sup>9</sup></code></li>
|
||
</ul>
|