1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-09-05 23:41:41 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
This commit is contained in:
zhangbk1
2024-06-05 08:50:06 +08:00
parent a8fcd060a2
commit 4b8628b444
56 changed files with 14794 additions and 9128 deletions

View File

@@ -0,0 +1,47 @@
<p>给你一个整数数组 <code>nums</code> 和一个二维数组 <code>queries</code>,其中 <code>queries[i] = [pos<sub>i</sub>, x<sub>i</sub>]</code></p>
<p>对于每个查询 <code>i</code>,首先将 <code>nums[pos<sub>i</sub>]</code> 设置为 <code>x<sub>i</sub></code>,然后计算查询 <code>i</code> 的答案,该答案为 <code>nums</code><strong>不包含相邻元素 </strong><span data-keyword="subsequence-array">子序列</span><strong>最大 </strong>和。</p>
<p>返回所有查询的答案之和。</p>
<p>由于最终答案可能非常大,返回其对 <code>10<sup>9</sup> + 7</code> <strong>取余</strong> 的结果。</p>
<p><strong>子序列</strong> 是指从另一个数组中删除一些或不删除元素而不改变剩余元素顺序得到的数组。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [3,5,9], queries = [[1,-2],[0,-3]]</span></p>
<p><strong>输出:</strong><span class="example-io">21</span></p>
<p><strong>解释:</strong><br />
执行第 1 个查询后,<code>nums = [3,-2,9]</code>,不包含相邻元素的子序列的最大和为 <code>3 + 9 = 12</code><br />
执行第 2 个查询后,<code>nums = [-3,-2,9]</code>,不包含相邻元素的子序列的最大和为 9 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [0,-1], queries = [[0,-5]]</span></p>
<p><strong>输出:</strong><span class="example-io">0</span></p>
<p><strong>解释:</strong><br />
执行第 1 个查询后,<code>nums = [-5,-1]</code>,不包含相邻元素的子序列的最大和为 0选择空子序列</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 5 * 10<sup>4</sup></code></li>
<li><code>-10<sup>5</sup> &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= queries.length &lt;= 5 * 10<sup>4</sup></code></li>
<li><code>queries[i] == [pos<sub>i</sub>, x<sub>i</sub>]</code></li>
<li><code>0 &lt;= pos<sub>i</sub> &lt;= nums.length - 1</code></li>
<li><code>-10<sup>5</sup> &lt;= x<sub>i</sub> &lt;= 10<sup>5</sup></code></li>
</ul>

View File

@@ -0,0 +1,41 @@
<p>给你两个整数数组 <code>nums1</code><code>nums2</code>,长度分别为 <code>n</code><code>m</code>。同时给你一个<strong>正整数</strong> <code>k</code></p>
<p>如果 <code>nums1[i]</code> 可以被 <code>nums2[j] * k</code> 整除,则称数对 <code>(i, j)</code><strong>优质数对</strong><code>0 &lt;= i &lt;= n - 1</code>, <code>0 &lt;= j &lt;= m - 1</code>)。</p>
<p>返回<strong> 优质数对 </strong>的总数。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums1 = [1,3,4], nums2 = [1,3,4], k = 1</span></p>
<p><strong>输出:</strong><span class="example-io">5</span></p>
<p><strong>解释:</strong></p>
<p>5个优质数对分别是 <code>(0, 0)</code>, <code>(1, 0)</code>, <code>(1, 1)</code>, <code>(2, 0)</code>, 和 <code>(2, 2)</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums1 = [1,2,4,12], nums2 = [2,4], k = 3</span></p>
<p><strong>输出:</strong><span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>2个优质数对分别是 <code>(3, 0)</code><code>(3, 1)</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n, m &lt;= 50</code></li>
<li><code>1 &lt;= nums1[i], nums2[j] &lt;= 50</code></li>
<li><code>1 &lt;= k &lt;= 50</code></li>
</ul>

View File

@@ -0,0 +1,41 @@
<p>给你两个整数数组 <code>nums1</code><code>nums2</code>,长度分别为 <code>n</code><code>m</code>。同时给你一个<strong>正整数</strong> <code>k</code></p>
<p>如果 <code>nums1[i]</code> 可以被 <code>nums2[j] * k</code> 整除,则称数对 <code>(i, j)</code><strong>优质数对</strong><code>0 &lt;= i &lt;= n - 1</code>, <code>0 &lt;= j &lt;= m - 1</code>)。</p>
<p>返回<strong> 优质数对 </strong>的总数。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums1 = [1,3,4], nums2 = [1,3,4], k = 1</span></p>
<p><strong>输出:</strong><span class="example-io">5</span></p>
<p><strong>解释:</strong></p>
<p>5个优质数对分别是 <code>(0, 0)</code>, <code>(1, 0)</code>, <code>(1, 1)</code>, <code>(2, 0)</code>, 和 <code>(2, 2)</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums1 = [1,2,4,12], nums2 = [2,4], k = 3</span></p>
<p><strong>输出:</strong><span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>2个优质数对分别是 <code>(3, 0)</code><code>(3, 1)</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= n, m &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums1[i], nums2[j] &lt;= 10<sup>6</sup></code></li>
<li><code>1 &lt;= k &lt;= 10<sup>3</sup></code></li>
</ul>

View File

@@ -0,0 +1,180 @@
<p>给你一个字符串 <code>s</code>,模拟每秒钟的事件 <code>i</code></p>
<ul>
<li>如果 <code>s[i] == 'E'</code>,表示有一位顾客进入候诊室并占用一把椅子。</li>
<li>如果 <code>s[i] == 'L'</code>,表示有一位顾客离开候诊室,从而释放一把椅子。</li>
</ul>
<p>返回保证每位进入候诊室的顾客都能有椅子坐的<strong> 最少 </strong>椅子数,假设候诊室最初是 <strong>空的 </strong></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">s = "EEEEEEE"</span></p>
<p><strong>输出:</strong><span class="example-io">7</span></p>
<p><strong>解释:</strong></p>
<p>每秒后都有一个顾客进入候诊室,没有人离开。因此,至少需要 7 把椅子。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">s = "ELELEEL"</span></p>
<p><strong>输出:</strong><span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>假设候诊室里有 2 把椅子。下表显示了每秒钟等候室的状态。</p>
</div>
<table>
<tbody>
<tr>
<th></th>
<th>事件</th>
<th>候诊室的人数</th>
<th>可用的椅子数</th>
</tr>
<tr>
<td>0</td>
<td>Enter</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>1</td>
<td>Leave</td>
<td>0</td>
<td>2</td>
</tr>
<tr>
<td>2</td>
<td>Enter</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>3</td>
<td>Leave</td>
<td>0</td>
<td>2</td>
</tr>
<tr>
<td>4</td>
<td>Enter</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td>5</td>
<td>Enter</td>
<td>2</td>
<td>0</td>
</tr>
<tr>
<td>6</td>
<td>Leave</td>
<td>1</td>
<td>1</td>
</tr>
</tbody>
</table>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">s = "ELEELEELLL"</span></p>
<p><strong>输出:</strong><span class="example-io">3</span></p>
<p><strong>解释:</strong></p>
<p>假设候诊室里有 3 把椅子。下表显示了每秒钟等候室的状态。</p>
</div>
<table>
<tbody>
<tr>
<th></th>
<th>事件</th>
<th>候诊室的人数</th>
<th>可用的椅子数</th>
</tr>
<tr>
<td>0</td>
<td>Enter</td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>1</td>
<td>Leave</td>
<td>0</td>
<td>3</td>
</tr>
<tr>
<td>2</td>
<td>Enter</td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>3</td>
<td>Enter</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>4</td>
<td>Leave</td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>5</td>
<td>Enter</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>6</td>
<td>Enter</td>
<td>3</td>
<td>0</td>
</tr>
<tr>
<td>7</td>
<td>Leave</td>
<td>2</td>
<td>1</td>
</tr>
<tr>
<td>8</td>
<td>Leave</td>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td>9</td>
<td>Leave</td>
<td>0</td>
<td>3</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 50</code></li>
<li><code>s</code> 仅由字母 <code>'E'</code><code>'L'</code> 组成。</li>
<li><code>s</code> 表示一个有效的进出序列。</li>
</ul>

View File

@@ -0,0 +1,45 @@
<p>给你一个字符串&nbsp;<code>s</code>&nbsp;。它可能包含任意数量的&nbsp;<code>'*'</code>&nbsp;字符。你的任务是删除所有的&nbsp;<code>'*'</code>&nbsp;字符。</p>
<p>当字符串还存在至少一个&nbsp;<code>'*'</code>&nbsp;字符时,你可以执行以下操作:</p>
<ul>
<li>删除最左边的&nbsp;<code>'*'</code>&nbsp;字符,同时删除该星号字符左边一个字典序 <strong>最小</strong>&nbsp;的字符。如果有多个字典序最小的字符,你可以删除它们中的任意一个。</li>
</ul>
<p>请你返回删除所有&nbsp;<code>'*'</code>&nbsp;字符以后,剩余字符连接而成的 <span data-keyword="lexicographically-smaller-string">字典序最小</span> 的字符串。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>s = "aaba*"</span></p>
<p><span class="example-io"><b>输出:</b>"aab"</span></p>
<p><strong>解释:</strong></p>
<p>删除 <code>'*'</code>&nbsp;号和它左边的其中一个&nbsp;<code>'a'</code>&nbsp;字符。如果我们选择删除&nbsp;<code>s[3]</code>&nbsp;<code>s</code>&nbsp;字典序最小。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>s = "abc"</span></p>
<p><span class="example-io"><b>输出:</b>"abc"</span></p>
<p><strong>解释:</strong></p>
<p>字符串中没有&nbsp;<code>'*'</code>&nbsp;字符。<!-- notionvc: ff07e34f-b1d6-41fb-9f83-5d0ba3c1ecde --></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= s.length &lt;= 10<sup>5</sup></code></li>
<li><code>s</code>&nbsp;只含有小写英文字母和&nbsp;<code>'*'</code>&nbsp;字符。</li>
<li>输入保证操作可以删除所有的&nbsp;<code>'*'</code>&nbsp;字符。</li>
</ul>

View File

@@ -0,0 +1,86 @@
<p>给你有一个 <strong>非负</strong>&nbsp;整数&nbsp;<code>k</code>&nbsp;。有一个无限长度的台阶,<strong>最低</strong>&nbsp;一层编号为 0 。</p>
<p>虎老师有一个整数&nbsp;<code>jump</code>&nbsp;,一开始值为 0 。虎老师从台阶 1 开始,虎老师可以使用 <strong>任意</strong>&nbsp;次操作,目标是到达第&nbsp;<code>k</code> 级台阶。假设虎老师位于台阶 <code>i</code> ,一次 <strong>操作</strong> 中,虎老师可以:</p>
<ul>
<li>向下走一级到&nbsp;<code>i - 1</code>&nbsp;,但该操作&nbsp;<strong>不能</strong>&nbsp;连续使用,如果在台阶第 0 级也不能使用。</li>
<li>向上走到台阶&nbsp;<code>i + 2<sup>jump</sup></code>&nbsp;处,然后&nbsp;<code>jump</code>&nbsp;变为&nbsp;<code>jump + 1</code>&nbsp;</li>
</ul>
<p>请你返回虎老师到达台阶 <code>k</code>&nbsp;处的总方案数。</p>
<p><b>注意</b>&nbsp;,虎老师可能到达台阶 <code>k</code>&nbsp;处后,通过一些操作重新回到台阶 <code>k</code>&nbsp;处,这视为不同的方案。</p>
<p>&nbsp;</p>
<p><b>示例 1</b></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>k = 0</span></p>
<p><span class="example-io"><b>输出:</b>2</span></p>
<p><strong>解释:</strong></p>
<p>2 种到达台阶 0 的方案为:</p>
<ul>
<li>虎老师从台阶&nbsp;1 开始。
<ul>
<li>执行第一种操作,从台阶 1 向下走到台阶 0 。</li>
</ul>
</li>
<li>虎老师从台阶 1 开始。
<ul>
<li>执行第一种操作,从台阶 1 向下走到台阶 0 。</li>
<li>执行第二种操作,向上走 2<sup>0</sup>&nbsp;级台阶到台阶 1 。</li>
<li>执行第一种操作,从台阶 1 向下走到台阶 0 。</li>
</ul>
</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>k = 1</span></p>
<p><span class="example-io"><b>输出:</b>4</span></p>
<p><strong>解释:</strong></p>
<p>4 种到达台阶 1 的方案为:</p>
<ul>
<li>虎老师从台阶 1 开始,已经到达台阶 1 。</li>
<li>虎老师从台阶 1 开始。
<ul>
<li>执行第一种操作,从台阶 1 向下走到台阶 0 。</li>
<li>执行第二种操作,向上走 2<sup>0</sup>&nbsp;级台阶到台阶 1 。</li>
</ul>
</li>
<li>虎老师从台阶 1 开始。
<ul>
<li>执行第二种操作,向上走 2<sup>0</sup>&nbsp;级台阶到台阶 2 。</li>
<li>执行第一种操作,向下走 1 级台阶到台阶 1 。</li>
</ul>
</li>
<li>虎老师从台阶 1 开始。
<ul>
<li>执行第一种操作,从台阶 1 向下走到台阶 0 。</li>
<li>执行第二种操作,向上走&nbsp;2<sup>0</sup>&nbsp;级台阶到台阶 1 。</li>
<li>执行第一种操作,向下走 1 级台阶到台阶 0 。</li>
<li>执行第二种操作,向上走 2<sup>1</sup>&nbsp;级台阶到台阶 2 。</li>
<li>执行第一种操作,向下走&nbsp;1 级台阶到台阶 1 。</li>
</ul>
</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>0 &lt;= k &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,58 @@
<p>给你一个字符串 <code>word</code>,请你使用以下算法进行压缩:</p>
<ul>
<li>从空字符串 <code>comp</code> 开始。当 <code>word</code> <strong>不为空</strong> 时,执行以下操作:
<ul>
<li>移除 <code>word</code> 的最长单字符前缀,该前缀由单一字符 <code>c</code> 重复多次组成,且该前缀长度 <strong>最多 </strong>为 9 。</li>
<li>将前缀的长度和字符 <code>c</code> 追加到 <code>comp</code></li>
</ul>
</li>
</ul>
<p>返回字符串 <code>comp</code></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">word = "abcde"</span></p>
<p><strong>输出:</strong><span class="example-io">"1a1b1c1d1e"</span></p>
<p><strong>解释:</strong></p>
<p>初始时,<code>comp = ""</code> 。进行 5 次操作,每次操作分别选择 <code>"a"</code><code>"b"</code><code>"c"</code><code>"d"</code><code>"e"</code> 作为前缀。</p>
<p>对每个前缀,将 <code>"1"</code> 和对应的字符追加到 <code>comp</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">word = "aaaaaaaaaaaaaabb"</span></p>
<p><strong>输出:</strong><span class="example-io">"9a5a2b"</span></p>
<p><strong>解释:</strong></p>
<p>初始时,<code>comp = ""</code>。进行 3 次操作,每次操作分别选择 <code>"aaaaaaaaa"</code><code>"aaaaa"</code><code>"bb"</code> 作为前缀。</p>
<ul>
<li>对于前缀 <code>"aaaaaaaaa"</code>,将 <code>"9"</code><code>"a"</code> 追加到 <code>comp</code></li>
<li>对于前缀 <code>"aaaaa"</code>,将 <code>"5"</code><code>"a"</code> 追加到 <code>comp</code></li>
<li>对于前缀 <code>"bb"</code>,将 <code>"2"</code><code>"b"</code> 追加到 <code>comp</code></li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= word.length &lt;= 2 * 10<sup>5</sup></code></li>
<li><code>word</code> 仅由小写英文字母组成。</li>
</ul>

View File

@@ -0,0 +1,43 @@
<p>车尔尼有一个数组&nbsp;<code>nums</code>&nbsp;,它只包含 <strong></strong>&nbsp;整数,所有正整数的数位长度都 <strong>相同</strong>&nbsp;</p>
<p>两个整数的 <strong>数位不同</strong>&nbsp;指的是两个整数 <b>相同</b>&nbsp;位置上不同数字的数目。</p>
<p>请车尔尼返回 <code>nums</code>&nbsp;<strong>所有</strong>&nbsp;整数对里,<strong>数位不同之和。</strong></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [13,23,12]</span></p>
<p><b>输出:</b>4</p>
<p><strong>解释:</strong><br />
计算过程如下:<br />
-&nbsp;<strong>1</strong>3 和&nbsp;<strong>2</strong>3 的数位不同为&nbsp;1 。<br />
- 1<strong>3</strong> 和 1<strong>2</strong>&nbsp;的数位不同为&nbsp;1 。<br />
-&nbsp;<strong>23</strong>&nbsp;<strong>12</strong>&nbsp;的数位不同为&nbsp;2 。<br />
所以所有整数数对的数位不同之和为&nbsp;<code>1 + 1 + 2 = 4</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [10,10,10,10]</span></p>
<p><span class="example-io"><b>输出:</b>0</span></p>
<p><strong>解释:</strong><br />
数组中所有整数都相同,所以所有整数数对的数位不同之和为 0 。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>2 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt; 10<sup>9</sup></code></li>
<li><code>nums</code>&nbsp;中的整数都有相同的数位长度。</li>
</ul>

View File

@@ -0,0 +1,60 @@
<p>给你一个整数&nbsp;<code>limit</code>&nbsp;和一个大小为 <code>n x 2</code>&nbsp;的二维数组&nbsp;<code>queries</code>&nbsp;</p>
<p>总共有&nbsp;<code>limit + 1</code>&nbsp;个球,每个球的编号为&nbsp;<code>[0, limit]</code>&nbsp;中一个&nbsp;<strong>互不相同</strong>&nbsp;的数字。一开始,所有球都没有颜色。<code>queries</code>&nbsp;中每次操作的格式为&nbsp;<code>[x, y]</code>&nbsp;,你需要将球&nbsp;<code>x</code>&nbsp;染上颜色&nbsp;<code>y</code>&nbsp;。每次操作之后,你需要求出所有球中&nbsp;<strong>不同</strong>&nbsp;颜色的数目。</p>
<p>请你返回一个长度为 <code>n</code>&nbsp;的数组&nbsp;<code>result</code>&nbsp;,其中&nbsp;<code>result[i]</code>&nbsp;是第 <code>i</code>&nbsp;次操作以后不同颜色的数目。</p>
<p><strong>注意</strong>&nbsp;,没有染色的球不算作一种颜色。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>limit = 4, queries = [[1,4],[2,5],[1,3],[3,4]]</span></p>
<p><span class="example-io"><b>输出:</b>[1,2,2,3]</span></p>
<p><strong>解释:</strong></p>
<p><img alt="" src="https://assets.leetcode.com/uploads/2024/04/17/ezgifcom-crop.gif" style="width: 455px; height: 145px;" /></p>
<ul>
<li>操作 0&nbsp;后,球 1 颜色为 4 。</li>
<li>操作 1 后,球 1 颜色为&nbsp;4 ,球 2 颜色为 5 。</li>
<li>操作 2 后,球 1 颜色为 3 ,球 2 颜色为 5 。</li>
<li>操作 3 后,球 1 颜色为 3 ,球 2 颜色为 5 ,球 3 颜色为 4 。</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>limit = 4, queries = [[0,1],[1,2],[2,2],[3,4],[4,5]]</span></p>
<p><span class="example-io"><b>输出:</b>[1,2,2,3,4]</span></p>
<p><strong>解释:</strong></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/04/17/ezgifcom-crop2.gif" style="width: 457px; height: 144px;" /></strong></p>
<ul>
<li>操作 0&nbsp;后,球 0&nbsp;颜色为 1&nbsp;</li>
<li>操作 1&nbsp;后,球 0&nbsp;颜色为 1 ,球 1 颜色为 2 。</li>
<li>操作 2&nbsp;后,球 0&nbsp;颜色为 1 ,球 1 和 2&nbsp;颜色为 2 。</li>
<li>操作 3 后,球 0&nbsp;颜色为 1 ,球 1 和 2&nbsp;颜色为 2 ,球 3 颜色为 4 。</li>
<li>操作 4&nbsp;后,球 0&nbsp;颜色为 1 ,球 1 和 2&nbsp;颜色为 2 ,球 3 颜色为 4 ,球 4 颜色为 5 。</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= limit &lt;= 10<sup>9</sup></code></li>
<li><code>1 &lt;= n == queries.length &lt;= 10<sup>5</sup></code></li>
<li><code>queries[i].length == 2</code></li>
<li><code>0 &lt;= queries[i][0] &lt;= limit</code></li>
<li><code>1 &lt;= queries[i][1] &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,53 @@
<p>给你一个数组&nbsp;<code>nums</code>&nbsp;和一个整数&nbsp;<code>k</code>&nbsp;。你需要找到&nbsp;<code>nums</code>&nbsp;的一个&nbsp;<span data-keyword="subarray-nonempty">子数组</span>&nbsp;,满足子数组中所有元素按位与运算&nbsp;<code>AND</code>&nbsp;的值与 <code>k</code>&nbsp;<strong>绝对差</strong>&nbsp;尽可能 <strong></strong>&nbsp;。换言之,你需要选择一个子数组&nbsp;<code>nums[l..r]</code>&nbsp;满足&nbsp;<code>|k - (nums[l] AND nums[l + 1] ... AND nums[r])|</code>&nbsp;最小。</p>
<p>请你返回 <strong>最小</strong>&nbsp;的绝对差值。</p>
<p><strong>子数组</strong>是数组中连续的&nbsp;<strong>非空</strong>&nbsp;元素序列。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,4,5], k = 3</span></p>
<p><span class="example-io"><b>输出:</b>1</span></p>
<p><strong>解释:</strong></p>
<p>子数组&nbsp;<code>nums[2..3]</code> 的按位&nbsp;<code>AND</code>&nbsp;运算值为 4 ,得到最小差值&nbsp;<code>|3 - 4| = 1</code>&nbsp;</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,1,2], k = 2</span></p>
<p><span class="example-io"><b>输出:</b>0</span></p>
<p><strong>解释:</strong></p>
<p>子数组&nbsp;<code>nums[1..1]</code> 的按位&nbsp;<code>AND</code>&nbsp;运算值为 2 ,得到最小差值&nbsp;<code>|2 - 2| = 0</code>&nbsp;</p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1], k = 10</span></p>
<p><span class="example-io"><b>输出:</b>9</span></p>
<p><strong>解释:</strong></p>
<p>只有一个子数组,按位&nbsp;<code>AND</code>&nbsp;运算值为 1 ,得到最小差值&nbsp;<code>|10 - 1| = 9</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
<li><code>1 &lt;= k &lt;= 10<sup>9</sup></code></li>
</ul>

View File

@@ -0,0 +1,54 @@
<p>给你一个正整数 <code>days</code>,表示员工可工作的总天数(从第 1 天开始)。另给你一个二维数组 <code>meetings</code>,长度为 <code>n</code>,其中 <code>meetings[i] = [start_i, end_i]</code> 表示第 <code>i</code> 次会议的开始和结束天数(包含首尾)。</p>
<p>返回员工可工作且没有安排会议的天数。</p>
<p><strong>注意:</strong>会议时间可能会有重叠。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">days = 10, meetings = [[5,7],[1,3],[9,10]]</span></p>
<p><strong>输出:</strong><span class="example-io">2</span></p>
<p><strong>解释:</strong></p>
<p>第 4 天和第 8 天没有安排会议。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">days = 5, meetings = [[2,4],[1,3]]</span></p>
<p><strong>输出:</strong><span class="example-io">1</span></p>
<p><strong>解释:</strong></p>
<p>第 5 天没有安排会议。</p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">days = 6, meetings = [[1,6]]</span></p>
<p><strong>输出:</strong>0</p>
<p><strong>解释:</strong></p>
<p>所有工作日都安排了会议。</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= days &lt;= 10<sup>9</sup></code></li>
<li><code>1 &lt;= meetings.length &lt;= 10<sup>5</sup></code></li>
<li><code>meetings[i].length == 2</code></li>
<li><code>1 &lt;= meetings[i][0] &lt;= meetings[i][1] &lt;= days</code></li>
</ul>

View File

@@ -0,0 +1,48 @@
<p>给你一个整数数组&nbsp;<code>nums</code>&nbsp;,一个整数数组&nbsp;<code>queries</code>&nbsp;和一个整数&nbsp;<code>x</code>&nbsp;</p>
<p>对于每个查询&nbsp;<code>queries[i]</code>&nbsp;,你需要找到&nbsp;<code>nums</code>&nbsp;中第&nbsp;<code>queries[i]</code>&nbsp;&nbsp;<code>x</code>&nbsp;的位置,并返回它的下标。如果数组中&nbsp;<code>x</code>&nbsp;的出现次数少于&nbsp;<code>queries[i]</code>&nbsp;,该查询的答案为 -1 。</p>
<p>请你返回一个整数数组&nbsp;<code>answer</code>&nbsp;,包含所有查询的答案。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,3,1,7], queries = [1,3,2,4], x = 1</span></p>
<p><span class="example-io"><b>输出:</b>[0,-1,2,-1]</span></p>
<p><strong>解释:</strong></p>
<ul>
<li>第 1 个查询,第一个 1 出现在下标 0 处。</li>
<li>第 2 个查询,<code>nums</code>&nbsp;中只有两个 1 ,所以答案为 -1 。</li>
<li>第 3 个查询,第二个 1 出现在下标 2 处。</li>
<li>第 4 个查询,<code>nums</code>&nbsp;中只有两个 1 ,所以答案为 -1 。</li>
</ul>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,3], queries = [10], x = 5</span></p>
<p><span class="example-io"><b>输出:</b>[-1]</span></p>
<p><strong>解释:</strong></p>
<ul>
<li>第 1 个查询,<code>nums</code>&nbsp;中没有 5 ,所以答案为 -1 。</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length, queries.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= queries[i] &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i], x &lt;= 10<sup>4</sup></code></li>
</ul>

View File

@@ -0,0 +1,51 @@
<p>给你一个数组&nbsp;<code>nums</code>&nbsp;,数组中的数字 <strong>要么</strong> 出现一次,<strong>要么</strong>&nbsp;出现两次。</p>
<p>请你返回数组中所有出现两次数字的按位<em>&nbsp;</em><code>XOR</code>&nbsp;值,如果没有数字出现过两次,返回 0 。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,1,3]</span></p>
<p><span class="example-io"><b>输出:</b>1</span></p>
<p><strong>解释:</strong></p>
<p><code>nums</code>&nbsp;中唯一出现过两次的数字是 1 。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,3]</span></p>
<p><span class="example-io"><b>输出:</b>0</span></p>
<p><strong>解释:</strong></p>
<p><code>nums</code>&nbsp;中没有数字出现两次。</p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>nums = [1,2,2,1]</span></p>
<p><span class="example-io"><b>输出:</b>3</span></p>
<p><strong>解释:</strong></p>
<p>数字 1 和&nbsp;2 出现过两次。<code>1 XOR 2 == 3</code>&nbsp;</p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 50</code></li>
<li><code>1 &lt;= nums[i] &lt;= 50</code></li>
<li><code>nums</code>&nbsp;中每个数字要么出现过一次,要么出现过两次。</li>
</ul>

View File

@@ -0,0 +1,56 @@
<p>有一条无限长的数轴,原点在 0 处,沿着 x 轴 <strong></strong>&nbsp;方向无限延伸。</p>
<p>给你一个二维数组&nbsp;<code>queries</code>&nbsp;,它包含两种操作:</p>
<ol>
<li>操作类型 1 <code>queries[i] = [1, x]</code>&nbsp;。在距离原点 <code>x</code>&nbsp;处建一个障碍物。数据保证当操作执行的时候,位置 <code>x</code>&nbsp;<strong>没有</strong>&nbsp;任何障碍物。</li>
<li>操作类型 2 <code>queries[i] = [2, x, sz]</code>&nbsp;。判断在数轴范围&nbsp;<code>[0, x]</code>&nbsp;内是否可以放置一个长度为&nbsp;<code>sz</code>&nbsp;的物块,这个物块需要&nbsp;<strong>完全</strong>&nbsp;放置在范围&nbsp;<code>[0, x]</code>&nbsp;内。如果物块与任何障碍物有重合,那么这个物块&nbsp;<strong>不能</strong>&nbsp;被放置,但物块可以与障碍物刚好接触。注意,你只是进行查询,并&nbsp;<strong>不是</strong>&nbsp;真的放置这个物块。每个查询都是相互独立的。</li>
</ol>
<p>请你返回一个 boolean 数组<code>results</code>&nbsp;,如果第&nbsp;<code>i</code> 个操作类型 2 的操作你可以放置物块,那么&nbsp;<code>results[i]</code>&nbsp;&nbsp;<code>true</code>&nbsp;,否则为 <code>false</code>&nbsp;</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>queries = [[1,2],[2,3,3],[2,3,1],[2,2,2]]</span></p>
<p><span class="example-io"><b>输出:</b>[false,true,true]</span></p>
<p><strong>解释:</strong></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/04/22/example0block.png" style="padding: 10px; background: rgb(255, 255, 255); border-radius: 0.5rem; width: 309px; height: 129px;" /></strong></p>
<p>查询 0 ,在&nbsp;<code>x = 2</code>&nbsp;处放置一个障碍物。在&nbsp;<code>x = 3</code>&nbsp;之前任何大小不超过 2 的物块都可以被放置。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><span class="example-io"><b>输入:</b>queries = </span>[[1,7],[2,7,6],[1,2],[2,7,5],[2,7,6]]<!-- notionvc: 4a471445-5af1-4d72-b11b-94d351a2c8e9 --></p>
<p><b>输出:</b>[true,true,false]</p>
<p><strong>解释:</strong></p>
<p><strong><img alt="" src="https://assets.leetcode.com/uploads/2024/04/22/example1block.png" style="padding: 10px; background: rgb(255, 255, 255); border-radius: 0.5rem; width: 310px; height: 130px;" /></strong></p>
<ul>
<li>查询 0 在&nbsp;<code>x = 7</code>&nbsp;处放置一个障碍物。在&nbsp;<code>x = 7</code>&nbsp;之前任何大小不超过 7 的物块都可以被放置。</li>
<li>查询 2 在&nbsp;<code>x = 2</code>&nbsp;处放置一个障碍物。现在,在&nbsp;<code>x = 7</code>&nbsp;之前任何大小不超过 5 的物块可以被放置,<code>x = 2</code>&nbsp;之前任何大小不超过 2 的物块可以被放置。</li>
</ul>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= queries.length &lt;= 15 * 10<sup>4</sup></code></li>
<li><code>2 &lt;= queries[i].length &lt;= 3</code></li>
<li><code>1 &lt;= queries[i][0] &lt;= 2</code></li>
<li><code>1 &lt;= x, sz &lt;= min(5 * 10<sup>4</sup>, 3 * queries.length)</code></li>
<li>输入保证操作 1 中,<code>x</code>&nbsp;处不会有障碍物。</li>
<li>输入保证至少有一个操作类型 2 。</li>
</ul>

View File

@@ -0,0 +1,50 @@
<p>如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 <strong>特殊数组</strong></p>
<p>Aging 有一个整数数组 <code>nums</code>。如果 <code>nums</code> 是一个 <strong>特殊数组</strong> ,返回 <code>true</code>,否则返回 <code>false</code></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [1]</span></p>
<p><strong>输出:</strong><span class="example-io">true</span></p>
<p><strong>解释:</strong></p>
<p>只有一个元素,所以答案为 <code>true</code></p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [2,1,4]</span></p>
<p><strong>输出:</strong><span class="example-io">true</span></p>
<p><strong>解释:</strong></p>
<p>只有两对相邻元素: <code>(2,1)</code><code>(1,4)</code>,它们都包含了奇偶性不同的数字,因此答案为 <code>true</code></p>
</div>
<p><strong class="example">示例 3</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [4,3,1,6]</span></p>
<p><strong>输出:</strong><span class="example-io">false</span></p>
<p><strong>解释:</strong></p>
<p><code>nums[1]</code><code>nums[2]</code> 都是奇数。因此答案为 <code>false</code></p>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 100</code></li>
<li><code>1 &lt;= nums[i] &lt;= 100</code></li>
</ul>

View File

@@ -0,0 +1,46 @@
<p>如果数组的每一对相邻元素都是两个奇偶性不同的数字,则该数组被认为是一个 <strong>特殊数组</strong></p>
<p>周洋哥有一个整数数组 <code>nums</code> 和一个二维整数矩阵 <code>queries</code>,对于 <code>queries[i] = [from<sub>i</sub>, to<sub>i</sub>]</code>,请你帮助周洋哥检查子数组 <code>nums[from<sub>i</sub>..to<sub>i</sub>]</code> 是不是一个 <strong>特殊数组 </strong></p>
<p>返回布尔数组 <code>answer</code>,如果 <code>nums[from<sub>i</sub>..to<sub>i</sub>]</code> 是特殊数组,则 <code>answer[i]</code><code>true</code> ,否则,<code>answer[i]</code><code>false</code></p>
<p>&nbsp;</p>
<p><strong class="example">示例 1</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [3,4,1,2,6], queries = [[0,4]]</span></p>
<p><strong>输出:</strong><span class="example-io">[false]</span></p>
<p><strong>解释:</strong></p>
<p>子数组是 <code>[3,4,1,2,6]</code>。2 和 6 都是偶数。</p>
</div>
<p><strong class="example">示例 2</strong></p>
<div class="example-block">
<p><strong>输入:</strong><span class="example-io">nums = [4,3,1,6], queries = [[0,2],[2,3]]</span></p>
<p><strong>输出:</strong><span class="example-io">[false,true]</span></p>
<p><strong>解释:</strong></p>
<ol>
<li>子数组是 <code>[4,3,1]</code>。3 和 1 都是奇数。因此这个查询的答案是 <code>false</code></li>
<li>子数组是 <code>[1,6]</code>。只有一对:<code>(1,6)</code>,且包含了奇偶性不同的数字。因此这个查询的答案是 <code>true</code></li>
</ol>
</div>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= nums[i] &lt;= 10<sup>5</sup></code></li>
<li><code>1 &lt;= queries.length &lt;= 10<sup>5</sup></code></li>
<li><code>queries[i].length == 2</code></li>
<li><code>0 &lt;= queries[i][0] &lt;= queries[i][1] &lt;= nums.length - 1</code></li>
</ul>