添加 problem 1004

This commit is contained in:
YDZ
2019-05-12 17:59:05 +08:00
parent 7ab99d30ce
commit 72fa2c4c94
3 changed files with 119 additions and 0 deletions

View File

@@ -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
}

View File

@@ -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")
}

View 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 连续的最长长度。
按照滑动窗口的思路处理即可,不断的更新和维护最大长度。