mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-04 23:11:41 +08:00
update
This commit is contained in:
42
leetcode-cn/problem (Chinese)/Hello LeetCode! [rMeRt2].md
Normal file
42
leetcode-cn/problem (Chinese)/Hello LeetCode! [rMeRt2].md
Normal file
@@ -0,0 +1,42 @@
|
||||
力扣嘉年华同样准备了纪念品展位,参观者只需要集齐 `helloleetcode` 的 `13` 张字母卡片即可获得力扣纪念章。
|
||||
|
||||
|
||||
|
||||
在展位上有一些由字母卡片拼成的单词,`words[i][j]` 表示第 `i` 个单词的第 `j` 个字母。
|
||||
|
||||
|
||||
|
||||
你可以从这些单词中取出一些卡片,但每次拿取卡片都需要消耗游戏代币,规则如下:
|
||||
|
||||
|
||||
|
||||
- 从一个单词中取一个字母所需要的代币数量,为该字母左边和右边字母数量之积
|
||||
|
||||
|
||||
|
||||
- 可以从一个单词中多次取字母,每个字母仅可被取一次
|
||||
|
||||
|
||||
|
||||
> 例如:从 `example` 中取出字母 `a`,需要消耗代币 `2*4=8`,字母取出后单词变为 `exmple`;
|
||||
|
||||
再从中取出字母 `m`,需要消耗代币 `2*3=6`,字母取出后单词变为 `exple`;
|
||||
|
||||
|
||||
|
||||
请返回取得 `helloleetcode` 这些字母需要消耗代币的 **最少** 数量。如果无法取得,返回 `-1`。
|
||||
|
||||
|
||||
|
||||
**注意:**
|
||||
|
||||
- 取出字母的顺序没有要求
|
||||
|
||||
- 取出的所有字母恰好可以拼成 `helloleetcode`
|
||||
|
||||
|
||||
|
||||
**示例 1:**
|
||||
|
||||
>输入:`words = ["hold","engineer","cost","level"]`
|
||||
|
@@ -0,0 +1,26 @@
|
||||
<p>给你两个正整数 <code>a</code> 和 <code>b</code> ,返回 <code>a</code> 和 <code>b</code> 的 <strong>公</strong> 因子的数目。</p>
|
||||
|
||||
<p>如果 <code>x</code> 可以同时整除 <code>a</code> 和 <code>b</code> ,则认为 <code>x</code> 是 <code>a</code> 和 <code>b</code> 的一个 <strong>公因子</strong> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>a = 12, b = 6
|
||||
<strong>输出:</strong>4
|
||||
<strong>解释:</strong>12 和 6 的公因子是 1、2、3、6 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>a = 25, b = 30
|
||||
<strong>输出:</strong>2
|
||||
<strong>解释:</strong>25 和 30 的公因子是 1、5 。</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= a, b <= 1000</code></li>
|
||||
</ul>
|
@@ -0,0 +1,35 @@
|
||||
<p>给你一个下标从 <strong>0</strong> 开始的字符串 <code>word</code> ,字符串只包含小写英文字母。你需要选择 <strong>一个</strong> 下标并 <strong>删除</strong> 下标处的字符,使得 <code>word</code> 中剩余每个字母出现 <strong>频率</strong> 相同。</p>
|
||||
|
||||
<p>如果删除一个字母后,<code>word</code> 中剩余所有字母的出现频率都相同,那么返回 <code>true</code> ,否则返回 <code>false</code> 。</p>
|
||||
|
||||
<p><strong>注意:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li>字母 <code>x</code> 的 <strong>频率</strong><strong> </strong>是这个字母在字符串中出现的次数。</li>
|
||||
<li>你 <strong>必须</strong> 恰好删除一个字母,不能一个字母都不删除。</li>
|
||||
</ul>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>word = "abcc"
|
||||
<b>输出:</b>true
|
||||
<b>解释:</b>选择下标 3 并删除该字母,word 变成 "abc" 且每个字母出现频率都为 1 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>word = "aazz"
|
||||
<b>输出:</b>false
|
||||
<b>解释:</b>我们必须删除一个字母,所以要么 "a" 的频率变为 1 且 "z" 的频率为 2 ,要么两个字母频率反过来。所以不可能让剩余所有字母出现频率相同。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>2 <= word.length <= 100</code></li>
|
||||
<li><code>word</code> 只包含小写英文字母。</li>
|
||||
</ul>
|
@@ -0,0 +1,54 @@
|
||||
<p>给你一个仅由小写英文字母组成的字符串 <code>s</code> 。在一步操作中,你可以:</p>
|
||||
|
||||
<ul>
|
||||
<li>删除 <strong>整个字符串</strong> <code>s</code> ,或者</li>
|
||||
<li>对于满足 <code>1 <= i <= s.length / 2</code> 的任意 <code>i</code> ,如果 <code>s</code> 中的 <strong>前</strong> <code>i</code> 个字母和接下来的 <code>i</code> 个字母 <strong>相等</strong> ,删除 <strong>前</strong> <code>i</code> 个字母。</li>
|
||||
</ul>
|
||||
|
||||
<p>例如,如果 <code>s = "ababc"</code> ,那么在一步操作中,你可以删除 <code>s</code> 的前两个字母得到 <code>"abc"</code> ,因为 <code>s</code> 的前两个字母和接下来的两个字母都等于 <code>"ab"</code> 。</p>
|
||||
|
||||
<p>返回删除 <code>s</code> 所需的最大操作数。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>s = "abcabcdabc"
|
||||
<strong>输出:</strong>2
|
||||
<strong>解释:</strong>
|
||||
- 删除前 3 个字母("abc"),因为它们和接下来 3 个字母相等。现在,s = "abcdabc"。
|
||||
- 删除全部字母。
|
||||
一共用了 2 步操作,所以返回 2 。可以证明 2 是所需的最大操作数。
|
||||
注意,在第二步操作中无法再次删除 "abc" ,因为 "abc" 的下一次出现并不是位于接下来的 3 个字母。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>s = "aaabaab"
|
||||
<strong>输出:</strong>4
|
||||
<strong>解释:</strong>
|
||||
- 删除第一个字母("a"),因为它和接下来的字母相等。现在,s = "aabaab"。
|
||||
- 删除前 3 个字母("aab"),因为它们和接下来 3 个字母相等。现在,s = "aab"。
|
||||
- 删除第一个字母("a"),因为它和接下来的字母相等。现在,s = "ab"。
|
||||
- 删除全部字母。
|
||||
一共用了 4 步操作,所以返回 4 。可以证明 4 是所需的最大操作数。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 3:</strong></p>
|
||||
|
||||
<pre>
|
||||
<strong>输入:</strong>s = "aaaaa"
|
||||
<strong>输出:</strong>5
|
||||
<strong>解释:</strong>在每一步操作中,都可以仅删除 s 的第一个字母。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= s.length <= 4000</code></li>
|
||||
<li><code>s</code> 仅由小写英文字母组成</li>
|
||||
</ul>
|
@@ -0,0 +1,33 @@
|
||||
<p>给你两个下标从 <strong>0</strong> 开始的数组 <code>nums1</code> 和 <code>nums2</code> ,两个数组都只包含非负整数。请你求出另外一个数组 <code>nums3</code> ,包含 <code>nums1</code> 和 <code>nums2</code> 中 <strong>所有数对</strong> 的异或和(<code>nums1</code> 中每个整数都跟 <code>nums2</code> 中每个整数 <strong>恰好</strong> 匹配一次)。</p>
|
||||
|
||||
<p>请你返回 <code>nums3</code> 中所有整数的 <strong>异或和</strong> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>nums1 = [2,1,3], nums2 = [10,2,5,0]
|
||||
<b>输出:</b>13
|
||||
<strong>解释:</strong>
|
||||
一个可能的 nums3 数组是 [8,0,7,2,11,3,4,1,9,1,6,3] 。
|
||||
所有这些数字的异或和是 13 ,所以我们返回 13 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>nums1 = [1,2], nums2 = [3,4]
|
||||
<b>输出:</b>0
|
||||
<strong>解释:</strong>
|
||||
所有数对异或和的结果分别为 nums1[0] ^ nums2[0] ,nums1[0] ^ nums2[1] ,nums1[1] ^ nums2[0] 和 nums1[1] ^ nums2[1] 。
|
||||
所以,一个可能的 nums3 数组是 [2,5,1,6] 。
|
||||
2 ^ 5 ^ 1 ^ 6 = 0 ,所以我们返回 0 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= nums1.length, nums2.length <= 10<sup>5</sup></code></li>
|
||||
<li><code>0 <= nums1[i], nums2[j] <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
40
leetcode-cn/problem (Chinese)/最小 XOR [minimize-xor].html
Normal file
40
leetcode-cn/problem (Chinese)/最小 XOR [minimize-xor].html
Normal file
@@ -0,0 +1,40 @@
|
||||
<p>给你两个正整数 <code>num1</code> 和 <code>num2</code> ,找出满足下述条件的整数 <code>x</code> :</p>
|
||||
|
||||
<ul>
|
||||
<li><code>x</code> 的置位数和 <code>num2</code> 相同,且</li>
|
||||
<li><code>x XOR num1</code> 的值 <strong>最小</strong></li>
|
||||
</ul>
|
||||
|
||||
<p>注意 <code>XOR</code> 是按位异或运算。</p>
|
||||
|
||||
<p>返回整数<em> </em><code>x</code> 。题目保证,对于生成的测试用例, <code>x</code> 是 <strong>唯一确定</strong> 的。</p>
|
||||
|
||||
<p>整数的 <strong>置位数</strong> 是其二进制表示中 <code>1</code> 的数目。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>num1 = 3, num2 = 5
|
||||
<strong>输出:</strong>3
|
||||
<strong>解释:</strong>
|
||||
num1 和 num2 的二进制表示分别是 0011 和 0101 。
|
||||
整数 <strong>3</strong> 的置位数与 num2 相同,且 <code>3 XOR 3 = 0</code> 是最小的。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>num1 = 1, num2 = 12
|
||||
<strong>输出:</strong>3
|
||||
<strong>解释:</strong>
|
||||
num1 和 num2 的二进制表示分别是 0001 和 1100 。
|
||||
整数 <strong>3</strong> 的置位数与 num2 相同,且 <code>3 XOR 1 = 2</code> 是最小的。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= num1, num2 <= 10<sup>9</sup></code></li>
|
||||
</ul>
|
27
leetcode-cn/problem (Chinese)/最小展台数量 [600YaG].md
Normal file
27
leetcode-cn/problem (Chinese)/最小展台数量 [600YaG].md
Normal file
@@ -0,0 +1,27 @@
|
||||
力扣嘉年华将举办一系列展览活动,后勤部将负责为每场展览提供所需要的展台。
|
||||
|
||||
已知后勤部得到了一份需求清单,记录了近期展览所需要的展台类型, `demand[i][j]` 表示第 `i` 天展览时第 `j` 个展台的类型。
|
||||
|
||||
在满足每一天展台需求的基础上,请返回后勤部需要准备的 **最小** 展台数量。
|
||||
|
||||
|
||||
|
||||
**注意:**
|
||||
|
||||
- 同一展台在不同天中可以重复使用。
|
||||
|
||||
|
||||
|
||||
**示例 1:**
|
||||
|
||||
>输入:`demand = ["acd","bed","accd"]`
|
||||
|
||||
>
|
||||
|
||||
>输出:`6`
|
||||
|
||||
>
|
||||
|
||||
>解释:
|
||||
|
||||
>第 `0` 天需要展台 `a、c、d`;
|
@@ -0,0 +1,43 @@
|
||||
<p>给你一个 <code>n</code> 个视频的上传序列,每个视频编号为 <code>1</code> 到 <code>n</code> 之间的 <strong>不同</strong> 数字,你需要依次将这些视频上传到服务器。请你实现一个数据结构,在上传的过程中计算 <strong>最长上传前缀</strong> 。</p>
|
||||
|
||||
<p>如果 <strong>闭区间</strong> <code>1</code> 到 <code>i</code> 之间的视频全部都已经被上传到服务器,那么我们称 <code>i</code> 是上传前缀。最长上传前缀指的是符合定义的 <code>i</code> 中的 <strong>最大值</strong> 。<br>
|
||||
<br>
|
||||
请你实现 <code>LUPrefix</code> 类:</p>
|
||||
|
||||
<ul>
|
||||
<li><code>LUPrefix(int n)</code> 初始化一个 <code>n</code> 个视频的流对象。</li>
|
||||
<li><code>void upload(int video)</code> 上传 <code>video</code> 到服务器。</li>
|
||||
<li><code>int longest()</code> 返回上述定义的 <strong>最长上传前缀</strong> 的长度。</li>
|
||||
</ul>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><strong>输入:</strong>
|
||||
["LUPrefix", "upload", "longest", "upload", "longest", "upload", "longest"]
|
||||
[[4], [3], [], [1], [], [2], []]
|
||||
<strong>输出:</strong>
|
||||
[null, null, 0, null, 1, null, 3]
|
||||
|
||||
<strong>解释:</strong>
|
||||
LUPrefix server = new LUPrefix(4); // 初始化 4个视频的上传流
|
||||
server.upload(3); // 上传视频 3 。
|
||||
server.longest(); // 由于视频 1 还没有被上传,最长上传前缀是 0 。
|
||||
server.upload(1); // 上传视频 1 。
|
||||
server.longest(); // 前缀 [1] 是最长上传前缀,所以我们返回 1 。
|
||||
server.upload(2); // 上传视频 2 。
|
||||
server.longest(); // 前缀 [1,2,3] 是最长上传前缀,所以我们返回 3 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>1 <= n <= 10<sup>5</sup></code></li>
|
||||
<li><code>1 <= video <= 10<sup>5</sup></code></li>
|
||||
<li><code>video</code> 中所有值 <strong>互不相同</strong> 。</li>
|
||||
<li><code>upload</code> 和 <code>longest</code> <strong>总调用</strong> 次数至多不超过 <code>2 * 10<sup>5</sup></code> 次。</li>
|
||||
<li>至少会调用 <code>longest</code> 一次。</li>
|
||||
</ul>
|
34
leetcode-cn/problem (Chinese)/沙地治理 [XxZZjK].md
Normal file
34
leetcode-cn/problem (Chinese)/沙地治理 [XxZZjK].md
Normal file
@@ -0,0 +1,34 @@
|
||||
在力扣城的沙漠分会场展示了一种沙柳树,这种沙柳树能够将沙地转化为坚实的绿地。
|
||||
|
||||
展示的区域为正三角形,这片区域可以拆分为若干个子区域,每个子区域都是边长为 `1` 的小三角形,其中第 `i` 行有 `2i - 1` 个小三角形。
|
||||
|
||||
|
||||
|
||||
初始情况下,区域中的所有位置都为沙地,你需要指定一些子区域种植沙柳树成为绿地,以达到转化整片区域为绿地的最终目的,规则如下:
|
||||
|
||||
- 若两个子区域共用一条边,则视为相邻;
|
||||
|
||||
>如下图所示,(1,1)和(2,2)相邻,(3,2)和(3,3)相邻;(2,2)和(3,3)不相邻,因为它们没有共用边。
|
||||
|
||||
- 若至少有两片绿地与同一片沙地相邻,则这片沙地也会转化为绿地
|
||||
|
||||
- 转化为绿地的区域会影响其相邻的沙地
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
现要将一片边长为 `size` 的沙地全部转化为绿地,请找到任意一种初始指定 **最少** 数量子区域种植沙柳的方案,并返回所有初始种植沙柳树的绿地坐标。
|
||||
|
||||
|
||||
|
||||
**示例 1:**
|
||||
|
||||
>输入:`size = 3`
|
||||
|
||||
>输出:`[[1,1],[2,1],[2,3],[3,1],[3,5]]`
|
||||
|
||||
>解释:如下图所示,一种方案为:
|
||||
|
||||
>指定所示的 5 个子区域为绿地。
|
||||
|
@@ -0,0 +1,34 @@
|
||||
<p>给你一个大小为 <code>m x n</code> 的整数矩阵 <code>grid</code> 。</p>
|
||||
|
||||
<p>按以下形式将矩阵的一部分定义为一个 <strong>沙漏</strong> :</p>
|
||||
<img alt="" src="https://assets.leetcode.com/uploads/2022/08/21/img.jpg" style="width: 243px; height: 243px;">
|
||||
<p>返回沙漏中元素的 <strong>最大</strong> 总和。</p>
|
||||
|
||||
<p><strong>注意:</strong>沙漏无法旋转且必须整个包含在矩阵中。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
<img alt="" src="https://assets.leetcode.com/uploads/2022/08/21/1.jpg" style="width: 323px; height: 323px;">
|
||||
<pre><strong>输入:</strong>grid = [[6,2,1,3],[4,2,1,5],[9,2,8,7],[4,1,2,9]]
|
||||
<strong>输出:</strong>30
|
||||
<strong>解释:</strong>上图中的单元格表示元素总和最大的沙漏:6 + 2 + 1 + 2 + 9 + 2 + 8 = 30 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
<img alt="" src="https://assets.leetcode.com/uploads/2022/08/21/2.jpg" style="width: 243px; height: 243px;">
|
||||
<pre><strong>输入:</strong>grid = [[1,2,3],[4,5,6],[7,8,9]]
|
||||
<strong>输出:</strong>35
|
||||
<strong>解释:</strong>上图中的单元格表示元素总和最大的沙漏:1 + 2 + 3 + 5 + 7 + 8 + 9 = 35 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>m == grid.length</code></li>
|
||||
<li><code>n == grid[i].length</code></li>
|
||||
<li><code>3 <= m, n <= 150</code></li>
|
||||
<li><code>0 <= grid[i][j] <= 10<sup>6</sup></code></li>
|
||||
</ul>
|
@@ -0,0 +1,41 @@
|
||||
<p>给你两个下标从 <strong>0</strong> 开始的整数数组 <code>nums1</code> 和 <code>nums2</code> ,两个数组的大小都为 <code>n</code> ,同时给你一个整数 <code>diff</code> ,统计满足以下条件的 <strong>数对 </strong><code>(i, j)</code> :</p>
|
||||
|
||||
<ul>
|
||||
<li><code>0 <= i < j <= n - 1</code> <b>且</b></li>
|
||||
<li><code>nums1[i] - nums1[j] <= nums2[i] - nums2[j] + diff</code>.</li>
|
||||
</ul>
|
||||
|
||||
<p>请你返回满足条件的 <strong>数对数目</strong> 。</p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>示例 1:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>nums1 = [3,2,5], nums2 = [2,2,1], diff = 1
|
||||
<b>输出:</b>3
|
||||
<strong>解释:</strong>
|
||||
总共有 3 个满足条件的数对:
|
||||
1. i = 0, j = 1:3 - 2 <= 2 - 2 + 1 。因为 i < j 且 1 <= 1 ,这个数对满足条件。
|
||||
2. i = 0, j = 2:3 - 5 <= 2 - 1 + 1 。因为 i < j 且 -2 <= 2 ,这个数对满足条件。
|
||||
3. i = 1, j = 2:2 - 5 <= 2 - 1 + 1 。因为 i < j 且 -3 <= 2 ,这个数对满足条件。
|
||||
所以,我们返回 3 。
|
||||
</pre>
|
||||
|
||||
<p><strong>示例 2:</strong></p>
|
||||
|
||||
<pre><b>输入:</b>nums1 = [3,-1], nums2 = [-2,2], diff = -1
|
||||
<b>输出:</b>0
|
||||
<strong>解释:</strong>
|
||||
没有满足条件的任何数对,所以我们返回 0 。
|
||||
</pre>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>提示:</strong></p>
|
||||
|
||||
<ul>
|
||||
<li><code>n == nums1.length == nums2.length</code></li>
|
||||
<li><code>2 <= n <= 10<sup>5</sup></code></li>
|
||||
<li><code>-10<sup>4</sup> <= nums1[i], nums2[i] <= 10<sup>4</sup></code></li>
|
||||
<li><code>-10<sup>4</sup> <= diff <= 10<sup>4</sup></code></li>
|
||||
</ul>
|
30
leetcode-cn/problem (Chinese)/美观的花束 [1GxJYY].md
Normal file
30
leetcode-cn/problem (Chinese)/美观的花束 [1GxJYY].md
Normal file
@@ -0,0 +1,30 @@
|
||||
力扣嘉年华的花店中从左至右摆放了一排鲜花,记录于整型一维矩阵 `flowers` 中每个数字表示该位置所种鲜花的品种编号。你可以选择一段区间的鲜花做成插花,且不能丢弃。
|
||||
|
||||
在你选择的插花中,如果每一品种的鲜花数量都不超过 `cnt` 朵,那么我们认为这束插花是 「美观的」。
|
||||
|
||||
> - 例如:`[5,5,5,6,6]` 中品种为 `5` 的花有 `3` 朵, 品种为 `6` 的花有 `2` 朵,**每一品种** 的数量均不超过 `3`
|
||||
|
||||
|
||||
|
||||
请返回在这一排鲜花中,共有多少种可选择的区间,使得插花是「美观的」。
|
||||
|
||||
|
||||
|
||||
**注意:**
|
||||
|
||||
- 答案需要以 `1e9 + 7 (1000000007)` 为底取模,如:计算初始结果为:`1000000008`,请返回 `1`
|
||||
|
||||
|
||||
|
||||
**示例 1:**
|
||||
|
||||
>输入:`flowers = [1,2,3,2], cnt = 1`
|
||||
|
||||
>
|
||||
|
||||
>输出:`8`
|
||||
|
||||
>
|
||||
|
||||
>解释:相同的鲜花不超过 `1` 朵,共有 `8` 种花束是美观的;
|
||||
|
29
leetcode-cn/problem (Chinese)/装饰树 [KnLfVT].md
Normal file
29
leetcode-cn/problem (Chinese)/装饰树 [KnLfVT].md
Normal file
@@ -0,0 +1,29 @@
|
||||
力扣嘉年华上的 DIY 手工展位准备了一棵缩小版的 **二叉** 装饰树 `root` 和灯饰,你需要将灯饰逐一插入装饰树中,要求如下:
|
||||
|
||||
|
||||
|
||||
- 完成装饰的二叉树根结点与 `root` 的根结点值相同
|
||||
|
||||
- 若一个节点拥有父节点,则在该节点和他的父节点之间插入一个灯饰(即插入一个值为 `-1` 的节点)。具体地:
|
||||
|
||||
- 在一个 父节点 x 与其左子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的左子节点,
|
||||
|
||||
- 在一个 父节点 x 与其右子节点 y 之间添加 -1 节点, 节点 -1、节点 y 为各自父节点的右子节点,
|
||||
|
||||
|
||||
|
||||
现给定二叉树的根节点 `root` ,请返回完成装饰后的树的根节点。
|
||||
|
||||
**示例 1:**
|
||||
|
||||
>输入:
|
||||
|
||||
>`root = [7,5,6]`
|
||||
|
||||
>
|
||||
|
||||
>输出:`[7,-1,-1,5,null,null,6]`
|
||||
|
||||
>
|
||||
|
||||
>解释:如下图所示,
|
56
leetcode-cn/problem (Chinese)/集水器 [kskhHQ].md
Normal file
56
leetcode-cn/problem (Chinese)/集水器 [kskhHQ].md
Normal file
@@ -0,0 +1,56 @@
|
||||
字符串数组 `shape` 描述了一个二维平面中的矩阵形式的集水器,`shape[i][j]` 表示集水器的第 `i` 行 `j` 列为:
|
||||
|
||||
- `'l'`表示向左倾斜的隔板(即从左上到右下);
|
||||
|
||||
- `'r'`表示向右倾斜的隔板(即从左下到右上);
|
||||
|
||||
- `'.'` 表示此位置没有隔板
|
||||
|
||||
{:width=200px}
|
||||
|
||||
|
||||
|
||||
已知当隔板构成存储容器可以存水,每个方格代表的蓄水量为 `2`。集水器初始浸泡在水中,除内部密闭空间外,所有位置均被水填满。
|
||||
|
||||
现将其从水中竖直向上取出,请返回集水器最终的蓄水量。
|
||||
|
||||
|
||||
|
||||
**注意:**
|
||||
|
||||
- 隔板具有良好的透气性,因此空气可以穿过隔板,但水无法穿过
|
||||
|
||||
|
||||
|
||||
**示例 1:**
|
||||
|
||||
> 输入:
|
||||
|
||||
> `shape = ["....rl","l.lr.r",".l..r.","..lr.."]`
|
||||
|
||||
>
|
||||
|
||||
> 输出:`18`
|
||||
|
||||
>
|
||||
|
||||
> 解释:如下图所示,由于空气会穿过隔板,因此红框区域没有水
|
||||
|
||||
{:width="280px"}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
**示例 2:**
|
||||
|
||||
> 输入:
|
||||
|
||||
> `shape = [".rlrlrlrl","ll..rl..r",".llrrllrr","..lr..lr."]`
|
||||
|
||||
> 输出:`18`
|
||||
|
||||
>
|
||||
|
||||
> 解释:如图所示。由于红框右侧未闭合,因此多余的水会从该处流走。
|
||||
|
Reference in New Issue
Block a user