Skip to content

Commit 82a0dd5

Browse files
authored
feat: add weekly contest 457 (#4553)
1 parent 2b5348d commit 82a0dd5

File tree

24 files changed

+1803
-1
lines changed

24 files changed

+1803
-1
lines changed
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
---
2+
comments: true
3+
difficulty: 简单
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3600-3699/3606.Coupon%20Code%20Validator/README.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3606. 优惠券校验器](https://leetcode.cn/problems/coupon-code-validator)
10+
11+
[English Version](/solution/3600-3699/3606.Coupon%20Code%20Validator/README_EN.md)
12+
13+
## 题目描述
14+
15+
<!-- description:start -->
16+
17+
<p>给你三个长度为 <code>n</code> 的数组,分别描述 <code>n</code> 个优惠券的属性:<code>code</code>、<code>businessLine</code> 和 <code>isActive</code>。其中,第 <code>i</code> 个优惠券具有以下属性:</p>
18+
19+
<ul>
20+
<li><code>code[i]</code>:一个 <strong>字符串</strong>,表示优惠券的标识符。</li>
21+
<li><code>businessLine[i]</code>:一个 <strong>字符串</strong>,表示优惠券所属的业务类别。</li>
22+
<li><code>isActive[i]</code>:一个 <strong>布尔值</strong>,表示优惠券是否当前有效。</li>
23+
</ul>
24+
25+
<p>当以下所有条件都满足时,优惠券被认为是&nbsp;<strong>有效的&nbsp;</strong>:</p>
26+
27+
<ol>
28+
<li><code>code[i]</code> 不能为空,并且仅由字母数字字符(a-z、A-Z、0-9)和下划线(<code>_</code>)组成。</li>
29+
<li><code>businessLine[i]</code> 必须是以下四个类别之一:<code>"electronics"</code>、<code>"grocery"</code>、<code>"pharmacy"</code>、<code>"restaurant"</code>。</li>
30+
<li><code>isActive[i]</code> 为 <strong>true&nbsp;</strong>。</li>
31+
</ol>
32+
33+
<p>返回所有&nbsp;<strong>有效优惠券的标识符&nbsp;</strong>组成的数组,按照以下规则排序:</p>
34+
35+
<ul>
36+
<li>先按照其 <strong>businessLine</strong> 的顺序排序:<code>"electronics"</code>、<code>"grocery"</code>、<code>"pharmacy"</code>、<code>"restaurant"</code>。</li>
37+
<li>在每个类别内,再按照 <strong>标识符的字典序(升序)</strong>排序。</li>
38+
</ul>
39+
40+
<p>&nbsp;</p>
41+
42+
<p><strong class="example">示例 1:</strong></p>
43+
44+
<div class="example-block">
45+
<p><strong>输入:</strong> <span class="example-io">code = ["SAVE20","","PHARMA5","SAVE@20"], businessLine = ["restaurant","grocery","pharmacy","restaurant"], isActive = [true,true,true,true]</span></p>
46+
47+
<p><strong>输出:</strong> <span class="example-io">["PHARMA5","SAVE20"]</span></p>
48+
49+
<p><strong>解释:</strong></p>
50+
51+
<ul>
52+
<li>第一个优惠券有效。</li>
53+
<li>第二个优惠券的标识符为空(无效)。</li>
54+
<li>第三个优惠券有效。</li>
55+
<li>第四个优惠券的标识符包含特殊字符 <code>@</code>(无效)。</li>
56+
</ul>
57+
</div>
58+
59+
<p><strong class="example">示例 2:</strong></p>
60+
61+
<div class="example-block">
62+
<p><strong>输入:</strong> <span class="example-io">code = ["GROCERY15","ELECTRONICS_50","DISCOUNT10"], businessLine = ["grocery","electronics","invalid"], isActive = [false,true,true]</span></p>
63+
64+
<p><strong>输出:</strong> <span class="example-io">["ELECTRONICS_50"]</span></p>
65+
66+
<p><strong>解释:</strong></p>
67+
68+
<ul>
69+
<li>第一个优惠券无效,因为它未激活。</li>
70+
<li>第二个优惠券有效。</li>
71+
<li>第三个优惠券无效,因为其业务类别无效。</li>
72+
</ul>
73+
</div>
74+
75+
<p>&nbsp;</p>
76+
77+
<p><strong>提示:</strong></p>
78+
79+
<ul>
80+
<li><code>n == code.length == businessLine.length == isActive.length</code></li>
81+
<li><code>1 &lt;= n &lt;= 100</code></li>
82+
<li><code>0 &lt;= code[i].length, businessLine[i].length &lt;= 100</code></li>
83+
<li><code>code[i]</code> 和 <code>businessLine[i]</code> 由可打印的 ASCII 字符组成。</li>
84+
<li><code>isActive[i]</code> 的值为 <code>true</code> 或 <code>false</code>。</li>
85+
</ul>
86+
87+
<!-- description:end -->
88+
89+
## 解法
90+
91+
<!-- solution:start -->
92+
93+
### 方法一
94+
95+
<!-- tabs:start -->
96+
97+
#### Python3
98+
99+
```python
100+
101+
```
102+
103+
#### Java
104+
105+
```java
106+
107+
```
108+
109+
#### C++
110+
111+
```cpp
112+
113+
```
114+
115+
#### Go
116+
117+
```go
118+
119+
```
120+
121+
<!-- tabs:end -->
122+
123+
<!-- solution:end -->
124+
125+
<!-- problem:end -->
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
---
2+
comments: true
3+
difficulty: Easy
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3600-3699/3606.Coupon%20Code%20Validator/README_EN.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3606. Coupon Code Validator](https://leetcode.com/problems/coupon-code-validator)
10+
11+
[中文文档](/solution/3600-3699/3606.Coupon%20Code%20Validator/README.md)
12+
13+
## Description
14+
15+
<!-- description:start -->
16+
17+
<p>You are given three arrays of length <code>n</code> that describe the properties of <code>n</code> coupons: <code>code</code>, <code>businessLine</code>, and <code>isActive</code>. The <code>i<sup>th</sup> </code>coupon has:</p>
18+
19+
<ul>
20+
<li><code>code[i]</code>: a <strong>string</strong> representing the coupon identifier.</li>
21+
<li><code>businessLine[i]</code>: a <strong>string</strong> denoting the business category of the coupon.</li>
22+
<li><code>isActive[i]</code>: a <strong>boolean</strong> indicating whether the coupon is currently active.</li>
23+
</ul>
24+
25+
<p>A coupon is considered <strong>valid</strong> if all of the following conditions hold:</p>
26+
27+
<ol>
28+
<li><code>code[i]</code> is non-empty and consists only of alphanumeric characters (a-z, A-Z, 0-9) and underscores (<code>_</code>).</li>
29+
<li><code>businessLine[i]</code> is one of the following four categories: <code>&quot;electronics&quot;</code>, <code>&quot;grocery&quot;</code>, <code>&quot;pharmacy&quot;</code>, <code>&quot;restaurant&quot;</code>.</li>
30+
<li><code>isActive[i]</code> is <strong>true</strong>.</li>
31+
</ol>
32+
33+
<p>Return an array of the <strong>codes</strong> of all valid coupons, <strong>sorted</strong> first by their <strong>businessLine</strong> in the order: <code>&quot;electronics&quot;</code>, <code>&quot;grocery&quot;</code>, <code>&quot;pharmacy&quot;, &quot;restaurant&quot;</code>, and then by <strong>code</strong> in lexicographical (ascending) order within each category.</p>
34+
35+
<p>&nbsp;</p>
36+
<p><strong class="example">Example 1:</strong></p>
37+
38+
<div class="example-block">
39+
<p><strong>Input:</strong> <span class="example-io">code = [&quot;SAVE20&quot;,&quot;&quot;,&quot;PHARMA5&quot;,&quot;SAVE@20&quot;], businessLine = [&quot;restaurant&quot;,&quot;grocery&quot;,&quot;pharmacy&quot;,&quot;restaurant&quot;], isActive = [true,true,true,true]</span></p>
40+
41+
<p><strong>Output:</strong> <span class="example-io">[&quot;PHARMA5&quot;,&quot;SAVE20&quot;]</span></p>
42+
43+
<p><strong>Explanation:</strong></p>
44+
45+
<ul>
46+
<li>First coupon is valid.</li>
47+
<li>Second coupon has empty code (invalid).</li>
48+
<li>Third coupon is valid.</li>
49+
<li>Fourth coupon has special character <code>@</code> (invalid).</li>
50+
</ul>
51+
</div>
52+
53+
<p><strong class="example">Example 2:</strong></p>
54+
55+
<div class="example-block">
56+
<p><strong>Input:</strong> <span class="example-io">code = [&quot;GROCERY15&quot;,&quot;ELECTRONICS_50&quot;,&quot;DISCOUNT10&quot;], businessLine = [&quot;grocery&quot;,&quot;electronics&quot;,&quot;invalid&quot;], isActive = [false,true,true]</span></p>
57+
58+
<p><strong>Output:</strong> <span class="example-io">[&quot;ELECTRONICS_50&quot;]</span></p>
59+
60+
<p><strong>Explanation:</strong></p>
61+
62+
<ul>
63+
<li>First coupon is inactive (invalid).</li>
64+
<li>Second coupon is valid.</li>
65+
<li>Third coupon has invalid business line (invalid).</li>
66+
</ul>
67+
</div>
68+
69+
<p>&nbsp;</p>
70+
<p><strong>Constraints:</strong></p>
71+
72+
<ul>
73+
<li><code>n == code.length == businessLine.length == isActive.length</code></li>
74+
<li><code>1 &lt;= n &lt;= 100</code></li>
75+
<li><code>0 &lt;= code[i].length, businessLine[i].length &lt;= 100</code></li>
76+
<li><code>code[i]</code> and <code>businessLine[i]</code> consist of printable ASCII characters.</li>
77+
<li><code>isActive[i]</code> is either <code>true</code> or <code>false</code>.</li>
78+
</ul>
79+
80+
<!-- description:end -->
81+
82+
## Solutions
83+
84+
<!-- solution:start -->
85+
86+
### Solution 1
87+
88+
<!-- tabs:start -->
89+
90+
#### Python3
91+
92+
```python
93+
94+
```
95+
96+
#### Java
97+
98+
```java
99+
100+
```
101+
102+
#### C++
103+
104+
```cpp
105+
106+
```
107+
108+
#### Go
109+
110+
```go
111+
112+
```
113+
114+
<!-- tabs:end -->
115+
116+
<!-- solution:end -->
117+
118+
<!-- problem:end -->
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
---
2+
comments: true
3+
difficulty: 中等
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3600-3699/3607.Power%20Grid%20Maintenance/README.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3607. 电网维护](https://leetcode.cn/problems/power-grid-maintenance)
10+
11+
[English Version](/solution/3600-3699/3607.Power%20Grid%20Maintenance/README_EN.md)
12+
13+
## 题目描述
14+
15+
<!-- description:start -->
16+
17+
<p data-end="401" data-start="120">给你一个整数 <code data-end="194" data-start="191">c</code>,表示 <code data-end="211" data-start="208">c</code> 个电站,每个电站有一个唯一标识符 <code>id</code>,从 1 到 <code>c</code>&nbsp;编号。</p>
18+
19+
<p data-end="401" data-start="120">这些电站通过 <code data-end="295" data-start="292">n</code> 条&nbsp;<strong>双向&nbsp;</strong>电缆互相连接,表示为一个二维数组 <code data-end="357" data-start="344">connections</code>,其中每个元素 <code data-end="430" data-start="405">connections[i] = [u<sub>i</sub>, v<sub>i</sub>]</code> 表示电站 <code>u<sub>i</sub></code> 和电站 <code>v<sub>i</sub></code> 之间的连接。直接或间接连接的电站组成了一个&nbsp;<strong>电网&nbsp;</strong>。</p>
20+
21+
<p data-end="626" data-start="586">最初,<strong>所有&nbsp;</strong>电站均处于在线(正常运行)状态。</p>
22+
23+
<p data-end="720" data-start="628">另给你一个二维数组 <code data-end="667" data-start="658">queries</code>,其中每个查询属于以下&nbsp;<strong>两种类型之一&nbsp;</strong>:</p>
24+
25+
<ul data-end="995" data-start="722">
26+
<li data-end="921" data-start="722">
27+
<p data-end="921" data-start="724"><code data-end="732" data-start="724">[1, x]</code>:请求对电站 <code data-end="782" data-start="779">x</code> 进行维护检查。如果电站 <code>x</code> 在线,则它自行解决检查。如果电站 <code>x</code> 已离线,则检查由与 <code>x</code> 同一&nbsp;<strong>电网&nbsp;</strong>中&nbsp;<strong>编号最小&nbsp;</strong>的在线电站解决。如果该电网中&nbsp;<strong>不存在&nbsp;</strong>任何&nbsp;<strong>在线&nbsp;</strong>电站,则返回 -1。</p>
28+
</li>
29+
<li data-end="995" data-start="923">
30+
<p data-end="995" data-start="925"><code data-end="933" data-start="925">[2, x]</code>:电站 <code data-end="946" data-start="943">x</code> 离线(即变为非运行状态)。</p>
31+
</li>
32+
</ul>
33+
34+
<p data-end="1106" data-start="997">返回一个整数数组,表示按照查询中出现的顺序,所有类型为 <code data-end="1080" data-start="1072">[1, x]</code> 的查询结果。</p>
35+
36+
<p data-end="1106" data-start="997"><strong>注意:</strong>电网的结构是固定的;离线(非运行)的节点仍然属于其所在的电网,且离线操作不会改变电网的连接性。</p>
37+
38+
<p>&nbsp;</p>
39+
40+
<p><strong class="example">示例 1:</strong></p>
41+
42+
<div class="example-block">
43+
<p><strong>输入:</strong> <span class="example-io">c = 5, connections = [[1,2],[2,3],[3,4],[4,5]], queries = [[1,3],[2,1],[1,1],[2,2],[1,2]]</span></p>
44+
45+
<p><strong>输出:</strong> <span class="example-io">[3,2,3]</span></p>
46+
47+
<p><strong>解释:</strong></p>
48+
49+
<p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/3600-3699/3607.Power%20Grid%20Maintenance/images/powergrid.jpg" style="width: 361px; height: 42px;" /></p>
50+
51+
<ul>
52+
<li data-end="223" data-start="143">最初,所有电站 <code>{1, 2, 3, 4, 5}</code> 都在线,并组成一个电网。</li>
53+
<li data-end="322" data-start="226">查询 <code>[1,3]</code>:电站 3 在线,因此维护检查由电站 3 自行解决。</li>
54+
<li data-end="402" data-start="325">查询 <code>[2,1]</code>:电站 1 离线。剩余在线电站为 <code>{2, 3, 4, 5}</code>。</li>
55+
<li data-end="557" data-start="405">查询 <code>[1,1]</code>:电站 1 离线,因此检查由电网中编号最小的在线电站解决,即电站 2。</li>
56+
<li data-end="641" data-start="560">查询 <code>[2,2]</code>:电站 2 离线。剩余在线电站为 <code>{3, 4, 5}</code>。</li>
57+
<li data-end="800" data-start="644">查询 <code>[1,2]</code>:电站 2 离线,因此检查由电网中编号最小的在线电站解决,即电站 3。</li>
58+
</ul>
59+
</div>
60+
61+
<p><strong class="example">示例 2:</strong></p>
62+
63+
<div class="example-block">
64+
<p><strong>输入:</strong> <span class="example-io">c = 3, connections = [], queries = [[1,1],[2,1],[1,1]]</span></p>
65+
66+
<p><strong>输出:</strong> <span class="example-io">[1,-1]</span></p>
67+
68+
<p><strong>解释:</strong></p>
69+
70+
<ul>
71+
<li data-end="976" data-start="909">没有连接,因此每个电站是一个独立的电网。</li>
72+
<li data-end="1096" data-start="979">查询 <code>[1,1]</code>:电站 1 在线,且属于其独立电网,因此维护检查由电站 1 自行解决。</li>
73+
<li data-end="1135" data-start="1099">查询 <code>[2,1]</code>:电站 1 离线。</li>
74+
<li data-end="1237" data-start="1138">查询 <code>[1,1]</code>:电站 1 离线,且其电网中没有其他电站,因此结果为 -1。</li>
75+
</ul>
76+
</div>
77+
78+
<p>&nbsp;</p>
79+
80+
<p><strong>提示:</strong></p>
81+
82+
<ul>
83+
<li data-end="155" data-start="139"><code>1 &lt;= c &lt;= 10<sup>5</sup></code></li>
84+
<li data-end="213" data-start="158"><code>0 &lt;= n == connections.length &lt;= min(10<sup>5</sup>, c * (c - 1) / 2)</code></li>
85+
<li data-end="244" data-start="216"><code>connections[i].length == 2</code></li>
86+
<li data-end="295" data-start="247"><code>1 &lt;= u<sub>i</sub>, v<sub>i</sub> &lt;= c</code></li>
87+
<li data-end="338" data-start="298"><code>u<sub>i</sub> != v<sub>i</sub></code></li>
88+
<li data-end="374" data-start="341"><code>1 &lt;= queries.length &lt;= 2 * 10<sup>5</sup></code></li>
89+
<li data-end="401" data-start="377"><code>queries[i].length == 2</code></li>
90+
<li data-end="436" data-start="404"><code>queries[i][0]</code> 为 1 或 2。</li>
91+
<li data-end="462" data-start="439"><code>1 &lt;= queries[i][1] &lt;= c</code></li>
92+
</ul>
93+
94+
<!-- description:end -->
95+
96+
## 解法
97+
98+
<!-- solution:start -->
99+
100+
### 方法一
101+
102+
<!-- tabs:start -->
103+
104+
#### Python3
105+
106+
```python
107+
108+
```
109+
110+
#### Java
111+
112+
```java
113+
114+
```
115+
116+
#### C++
117+
118+
```cpp
119+
120+
```
121+
122+
#### Go
123+
124+
```go
125+
126+
```
127+
128+
<!-- tabs:end -->
129+
130+
<!-- solution:end -->
131+
132+
<!-- problem:end -->

0 commit comments

Comments
 (0)