Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 9a58a53

Browse files
feat: add weekly contest 428 (doocs#3861)
1 parent 70f3038 commit 9a58a53

File tree

26 files changed

+1879
-10
lines changed

26 files changed

+1879
-10
lines changed

‎solution/0900-0999/0977.Squares of a Sorted Array/README.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ tags:
2323
<ul>
2424
</ul>
2525

26-
<p></p>
26+
<p>&nbsp;</p>
2727

2828
<p><strong>示例 1:</strong></p>
2929

@@ -40,22 +40,22 @@ tags:
4040
<strong>输出:</strong>[4,9,9,49,121]
4141
</pre>
4242

43-
<p></p>
43+
<p>&nbsp;</p>
4444

4545
<p><strong>提示:</strong></p>
4646

4747
<ul>
48-
<li><code><span>1 <= nums.length <= </span>10<sup>4</sup></code></li>
49-
<li><code>-10<sup>4</sup> <= nums[i] <= 10<sup>4</sup></code></li>
48+
<li><code><span>1 &lt;= nums.length &lt;= </span>10<sup>4</sup></code></li>
49+
<li><code>-10<sup>4</sup> &lt;= nums[i] &lt;= 10<sup>4</sup></code></li>
5050
<li><code>nums</code> 已按 <strong>非递减顺序</strong> 排序</li>
5151
</ul>
5252

53-
<p></p>
53+
<p>&nbsp;</p>
5454

5555
<p><strong>进阶:</strong></p>
5656

5757
<ul>
58-
<li>请你<span style="color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">设计时间复杂度为 <code>O(n)</code> 的算法解决本问题</span></li>
58+
<li>请你设计时间复杂度为 <code>O(n)</code> 的算法解决本问题</li>
5959
</ul>
6060

6161
<!-- description:end -->

‎solution/1800-1899/1891.Cutting Ribbons/README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ tags:
2929
<li>切割成四条长度为 <code>1</code>&nbsp;的绳子。</li>
3030
</ul>
3131

32-
<p>你的任务是找出最大 <code>x</code> 值,要求满足可以裁切出恰好 <code>k</code> 条长度均为 <code>x</code> 的绳子。你可以丢弃裁切后剩余的任意长度的绳子。如果不可能切割出&nbsp;<code>k</code> 条相同长度的绳子,返回 0。</p>
32+
<p>你的任务是找出最大 <code>x</code> 值,要求满足可以裁切出至少&nbsp;<code>k</code> 条长度均为 <code>x</code> 的绳子。你可以丢弃裁切后剩余的任意长度的绳子。如果不可能切割出&nbsp;<code>k</code> 条相同长度的绳子,返回 0。</p>
3333

3434
<p>&nbsp;</p>
3535

‎solution/2700-2799/2762.Continuous Subarrays/README_EN.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ tags:
3939
<pre>
4040
<strong>Input:</strong> nums = [5,4,2,4]
4141
<strong>Output:</strong> 8
42-
<strong>Explanation:</strong>
42+
<strong>Explanation:</strong>
4343
Continuous subarray of size 1: [5], [4], [2], [4].
4444
Continuous subarray of size 2: [5,4], [4,2], [2,4].
4545
Continuous subarray of size 3: [4,2,4].
@@ -55,7 +55,7 @@ It can be shown that there are no more continuous subarrays.
5555
<pre>
5656
<strong>Input:</strong> nums = [1,2,3]
5757
<strong>Output:</strong> 6
58-
<strong>Explanation:</strong>
58+
<strong>Explanation:</strong>
5959
Continuous subarray of size 1: [1], [2], [3].
6060
Continuous subarray of size 2: [1,2], [2,3].
6161
Continuous subarray of size 3: [1,2,3].
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
---
2+
comments: true
3+
difficulty: 简单
4+
edit_url: https://github.com/doocs/leetcode/edit/main/solution/3300-3399/3386.Button%20with%20Longest%20Push%20Time/README.md
5+
---
6+
7+
<!-- problem:start -->
8+
9+
# [3386. 按下时间最长的按钮](https://leetcode.cn/problems/button-with-longest-push-time)
10+
11+
[English Version](/solution/3300-3399/3386.Button%20with%20Longest%20Push%20Time/README_EN.md)
12+
13+
## 题目描述
14+
15+
<!-- description:start -->
16+
17+
<p>给你一个二维数组 <code>events</code>,表示孩子在键盘上按下一系列按钮触发的按钮事件。</p>
18+
19+
<p>每个 <code>events[i] = [index<sub>i</sub>, time<sub>i</sub>]</code> 表示在时间 <code>time<sub>i</sub></code> 时,按下了下标为 <code>index<sub>i</sub></code> 的按钮。</p>
20+
21+
<ul>
22+
<li>数组按照 <code>time</code> 的递增顺序<strong>排序</strong>。</li>
23+
<li>按下一个按钮所需的时间是连续两次按钮按下的时间差。按下第一个按钮所需的时间就是其时间戳。</li>
24+
</ul>
25+
26+
<p>返回按下时间&nbsp;<strong>最长&nbsp;</strong>的按钮的 <code>index</code>。如果有多个按钮的按下时间相同,则返回 <code>index</code> 最小的按钮。</p>
27+
28+
<p>&nbsp;</p>
29+
30+
<p><strong class="example">示例 1:</strong></p>
31+
32+
<div class="example-block">
33+
<p><strong>输入:</strong> <span class="example-io">events = [[1,2],[2,5],[3,9],[1,15]]</span></p>
34+
35+
<p><strong>输出:</strong> <span class="example-io">1</span></p>
36+
37+
<p><strong>解释:</strong></p>
38+
39+
<ul>
40+
<li>下标为 1 的按钮在时间 2 被按下。</li>
41+
<li>下标为 2 的按钮在时间 5 被按下,因此按下时间为 <code>5 - 2 = 3</code>。</li>
42+
<li>下标为 3 的按钮在时间 9 被按下,因此按下时间为 <code>9 - 5 = 4</code>。</li>
43+
<li>下标为 1 的按钮再次在时间 15 被按下,因此按下时间为 <code>15 - 9 = 6</code>。</li>
44+
</ul>
45+
46+
<p>最终,下标为 1 的按钮按下时间最长,为 6。</p>
47+
</div>
48+
49+
<p><strong class="example">示例 2:</strong></p>
50+
51+
<div class="example-block">
52+
<p><strong>输入:</strong> <span class="example-io">events = [[10,5],[1,7]]</span></p>
53+
54+
<p><strong>输出:</strong> <span class="example-io">10</span></p>
55+
56+
<p><strong>解释:</strong></p>
57+
58+
<ul>
59+
<li>下标为 10 的按钮在时间 5 被按下。</li>
60+
<li>下标为 1 的按钮在时间 7 被按下,因此按下时间为 <code>7 - 5 = 2</code>。</li>
61+
</ul>
62+
63+
<p>最终,下标为 10 的按钮按下时间最长,为 5。</p>
64+
</div>
65+
66+
<p>&nbsp;</p>
67+
68+
<p><strong>提示:</strong></p>
69+
70+
<ul>
71+
<li><code>1 &lt;= events.length &lt;= 1000</code></li>
72+
<li><code>events[i] == [index<sub>i</sub>, time<sub>i</sub>]</code></li>
73+
<li><code>1 &lt;= index<sub>i</sub>, time<sub>i</sub> &lt;= 10<sup>5</sup></code></li>
74+
<li>输入保证数组 <code>events</code> 按照 <code>time<sub>i</sub></code> 的递增顺序排序。</li>
75+
</ul>
76+
77+
<!-- description:end -->
78+
79+
## 解法
80+
81+
<!-- solution:start -->
82+
83+
### 方法一:一次遍历
84+
85+
我们定义两个变量 $\textit{ans}$ 和 $t,ドル分别表示按下时间最长的按钮的索引和按下时间。
86+
87+
接下来,我们从下标 $k = 1$ 开始遍历数组 $\textit{events},ドル对于每个 $k,ドル我们计算当前按钮的按下时间 $d = t2 - t1,ドル其中 $t2$ 是当前按钮的按下时间,而 $t1$ 是前一个按钮的按下时间。如果 $d > t$ 或者 $d = t$ 且当前按钮的索引 $i$ 小于 $\textit{ans},ドル我们更新 $\textit{ans} = i$ 和 $t = d$。
88+
89+
最后,我们返回 $\textit{ans}$。
90+
91+
时间复杂度 $O(n),ドル其中 $n$ 是数组 $\textit{events}$ 的长度。空间复杂度 $O(1)$。
92+
93+
<!-- tabs:start -->
94+
95+
#### Python3
96+
97+
```python
98+
class Solution:
99+
def buttonWithLongestTime(self, events: List[List[int]]) -> int:
100+
ans, t = events[0]
101+
for (_, t1), (i, t2) in pairwise(events):
102+
d = t2 - t1
103+
if d > t or (d == t and i < ans):
104+
ans, t = i, d
105+
return ans
106+
```
107+
108+
#### Java
109+
110+
```java
111+
class Solution {
112+
public int buttonWithLongestTime(int[][] events) {
113+
int ans = events[0][0], t = events[0][1];
114+
for (int k = 1; k < events.length; ++k) {
115+
int i = events[k][0], t2 = events[k][1], t1 = events[k - 1][1];
116+
int d = t2 - t1;
117+
if (d > t || (d == t && ans > i)) {
118+
ans = i;
119+
t = d;
120+
}
121+
}
122+
return ans;
123+
}
124+
}
125+
```
126+
127+
#### C++
128+
129+
```cpp
130+
class Solution {
131+
public:
132+
int buttonWithLongestTime(vector<vector<int>>& events) {
133+
int ans = events[0][0], t = events[0][1];
134+
for (int k = 1; k < events.size(); ++k) {
135+
int i = events[k][0], t2 = events[k][1], t1 = events[k - 1][1];
136+
int d = t2 - t1;
137+
if (d > t || (d == t && ans > i)) {
138+
ans = i;
139+
t = d;
140+
}
141+
}
142+
return ans;
143+
}
144+
};
145+
```
146+
147+
#### Go
148+
149+
```go
150+
func buttonWithLongestTime(events [][]int) int {
151+
ans, t := events[0][0], events[0][1]
152+
for k, e := range events[1:] {
153+
i, t2, t1 := e[0], e[1], events[k][1]
154+
d := t2 - t1
155+
if d > t || (d == t && i < ans) {
156+
ans, t = i, d
157+
}
158+
}
159+
return ans
160+
}
161+
```
162+
163+
#### TypeScript
164+
165+
```ts
166+
function buttonWithLongestTime(events: number[][]): number {
167+
let [ans, t] = events[0];
168+
for (let k = 1; k < events.length; ++k) {
169+
const [i, t2] = events[k];
170+
const d = t2 - events[k - 1][1];
171+
if (d > t || (d === t && i < ans)) {
172+
ans = i;
173+
t = d;
174+
}
175+
}
176+
return ans;
177+
}
178+
```
179+
180+
<!-- tabs:end -->
181+
182+
<!-- solution:end -->
183+
184+
<!-- problem:end -->

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /