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 db4b67d

Browse files
✨update: Modify 1004
1 parent 1b2895a commit db4b67d

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

‎LeetCode/1001-1010/1004. 最大连续1的个数 III(中等).md‎

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ Tag : 「双指针」、「滑动窗口」、「二分」、「前缀和」
66

77

88

9-
给定一个由若干 01 组成的数组 A,我们最多可以将 K 个值从 0 变成 1
9+
给定一个由若干 0ドル$1ドル$ 组成的数组 `A`,我们最多可以将 $K$ 个值从 0ドル$ 变成 1ドル$
1010

11-
返回仅包含 1 的最长(连续)子数组的长度。
11+
返回仅包含 1ドル$ 的最长(连续)子数组的长度。
1212

1313

1414
示例 1:
@@ -29,9 +29,9 @@ Tag : 「双指针」、「滑动窗口」、「二分」、「前缀和」
2929
```
3030

3131
提示:
32-
* 1 <= A.length <= 20000
33-
* 0 <= K <= A.length
34-
* A[i]01
32+
* $1 <= A.length <= 20000$
33+
* $0 <= K <= A.length$
34+
* $A[i]$0ドル$1ドル$
3535

3636
---
3737

@@ -51,7 +51,7 @@ Tag : 「双指针」、「滑动窗口」、「二分」、「前缀和」
5151
* 如果 $A[i]$ 本身不为 1 的话,由于定义是必须以 $A[i]$ 为结尾,因此必须要选择翻转该位置,$f[i][j] = f[i - 1][j - 1] + 1$。
5252

5353
代码:
54-
```Java []
54+
```Java
5555
class Solution {
5656
public int longestOnes(int[] nums, int k) {
5757
int n = nums.length;
@@ -75,7 +75,7 @@ class Solution {
7575
* 时间复杂度:$O(nk)$
7676
* 空间复杂度:$O(k)$
7777

78-
***
78+
---
7979

8080
### 前缀和 + 二分
8181

@@ -134,19 +134,18 @@ class Solution {
134134

135135
**当目标值不存在,「二分」找到的应该是数组内比目标值小或比目标值大的最接近的数。因此二分结束后先进行 `check` 再使用是一个好习惯。**
136136

137-
***
137+
---
138138

139139
### 双指针
140140

141141
由于我们总是比较 `len``tot``k` 三者的关系。
142142

143143
因此我们可以使用「滑动窗口」的思路,动态维护一个左右区间 `[j, i]` 和维护窗口内和 `tot`
144144

145-
右端点一直右移,左端点在窗口不满足「`len - tol <= k`」的时候进行右移。
146-
147-
即可做到线程扫描的复杂度:
145+
右端点一直右移,左端点在窗口不满足「`len - tol <= k`」的时候进行右移,即可做到线程扫描的复杂度。
148146

149-
```Java []
147+
代码:
148+
```Java
150149
class Solution {
151150
public int longestOnes(int[] nums, int k) {
152151
int n = nums.length;
@@ -163,20 +162,19 @@ class Solution {
163162
* 时间复杂度:$O(n)$
164163
* 空间复杂度:$O(1)$
165164

166-
***
165+
---
167166

168167
### 总结
169168

170169
**除了掌握本题解法以外,我还希望你能理解这几种解法是如何被想到的(特别是如何从「动态规划」想到「二分」)。**
171170

172171
**根据数据范围(复杂度)调整自己所使用的算法的分析能力,比解决该题本身更加重要。**
173172

174-
175173
---
176174

177175
### 最后
178176

179-
这是我们「刷穿 LeetCode」系列文章的第 `No.1004` 篇,系列开始于 2021年01月01日,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先将所有不带锁的题目刷完
177+
这是我们「刷穿 LeetCode」系列文章的第 `No.1004` 篇,系列开始于 2021年01月01日,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完
180178

181179
在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。
182180

0 commit comments

Comments
(0)

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