Skip to content

Commit db4b67d

Browse files
committed
✨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

+13-15
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] 为 0 或 1 
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)