mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2026-03-13 10:02:05 +08:00
添加 problem 1004
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
package leetcode
|
||||
|
||||
func longestOnes(A []int, K int) int {
|
||||
res, left, right := 0, 0, 0
|
||||
for left < len(A) {
|
||||
if right < len(A) && ((A[right] == 0 && K > 0) || A[right] == 1) {
|
||||
if A[right] == 0 {
|
||||
K--
|
||||
}
|
||||
right++
|
||||
} else {
|
||||
if K == 0 || (right == len(A) && K > 0) {
|
||||
res = max(res, right-left)
|
||||
}
|
||||
if A[left] == 0 {
|
||||
K++
|
||||
}
|
||||
left++
|
||||
}
|
||||
}
|
||||
return res
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question1004 struct {
|
||||
para1004
|
||||
ans1004
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
// one 代表第一个参数
|
||||
type para1004 struct {
|
||||
s []int
|
||||
k int
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
// one 代表第一个答案
|
||||
type ans1004 struct {
|
||||
one int
|
||||
}
|
||||
|
||||
func Test_Problem1004(t *testing.T) {
|
||||
|
||||
qs := []question1004{
|
||||
|
||||
question1004{
|
||||
para1004{[]int{1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0}, 2},
|
||||
ans1004{6},
|
||||
},
|
||||
|
||||
question1004{
|
||||
para1004{[]int{0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1}, 3},
|
||||
ans1004{10},
|
||||
},
|
||||
|
||||
question1004{
|
||||
para1004{[]int{0, 0, 0, 1}, 4},
|
||||
ans1004{4},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 1004------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans1004, q.para1004
|
||||
fmt.Printf("【input】:%v 【output】:%v\n", p, longestOnes(p.s, p.k))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
||||
44
Algorithms/1004. Max Consecutive Ones III/README.md
Normal file
44
Algorithms/1004. Max Consecutive Ones III/README.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# [1004. Max Consecutive Ones III](https://leetcode.com/problems/max-consecutive-ones-iii/)
|
||||
|
||||
## 题目
|
||||
|
||||
Given an array A of 0s and 1s, we may change up to K values from 0 to 1.
|
||||
|
||||
Return the length of the longest (contiguous) subarray that contains only 1s.
|
||||
|
||||
|
||||
Example 1:
|
||||
|
||||
```c
|
||||
Input: A = [1,1,1,0,0,0,1,1,1,1,0], K = 2
|
||||
Output: 6
|
||||
Explanation:
|
||||
[1,1,1,0,0,1,1,1,1,1,1]
|
||||
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
|
||||
```
|
||||
|
||||
Example 2:
|
||||
|
||||
```c
|
||||
Input: A = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
|
||||
Output: 10
|
||||
Explanation:
|
||||
[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
|
||||
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.
|
||||
```
|
||||
|
||||
|
||||
Note:
|
||||
|
||||
- 1 <= A.length <= 20000
|
||||
- 0 <= K <= A.length
|
||||
- A[i] is 0 or 1
|
||||
|
||||
|
||||
## 题目大意
|
||||
|
||||
这道题考察的是滑动窗口的问题。
|
||||
|
||||
给出一个数组,数组中元素只包含 0 和 1 。再给一个 K,代表能将 0 变成 1 的次数。要求出经过变换以后,1 连续的最长长度。
|
||||
|
||||
按照滑动窗口的思路处理即可,不断的更新和维护最大长度。
|
||||
Reference in New Issue
Block a user