Add solution 674

This commit is contained in:
YDZ
2021-01-24 23:46:18 +08:00
parent 4c34ef0a82
commit 8747599780
13 changed files with 261 additions and 38 deletions

View File

@ -0,0 +1,24 @@
package leetcode
func findLengthOfLCIS(nums []int) int {
if len(nums) == 0 {
return 0
}
res, length := 1, 1
for i := 1; i < len(nums); i++ {
if nums[i] > nums[i-1] {
length++
} else {
res = max(res, length)
length = 1
}
}
return max(res, length)
}
func max(a, b int) int {
if a > b {
return a
}
return b
}

View File

@ -0,0 +1,52 @@
package leetcode
import (
"fmt"
"testing"
)
type question674 struct {
para674
ans674
}
// para 是参数
// one 代表第一个参数
type para674 struct {
nums []int
}
// ans 是答案
// one 代表第一个答案
type ans674 struct {
one int
}
func Test_Problem674(t *testing.T) {
qs := []question674{
{
para674{[]int{1, 3, 5, 4, 7}},
ans674{3},
},
{
para674{[]int{2, 2, 2, 2, 2}},
ans674{1},
},
{
para674{[]int{1, 3, 5, 7}},
ans674{4},
},
}
fmt.Printf("------------------------Leetcode Problem 674------------------------\n")
for _, q := range qs {
_, p := q.ans674, q.para674
fmt.Printf("【input】:%v 【output】:%v\n", p, findLengthOfLCIS(p.nums))
}
fmt.Printf("\n\n\n")
}

View File

@ -0,0 +1,69 @@
# [674. Longest Continuous Increasing Subsequence](https://leetcode.com/problems/longest-continuous-increasing-subsequence/)
## 题目
Given an unsorted array of integers `nums`, return *the length of the longest **continuous increasing subsequence** (i.e. subarray)*. The subsequence must be **strictly** increasing.
A **continuous increasing subsequence** is defined by two indices `l` and `r` (`l < r`) such that it is `[nums[l], nums[l + 1], ..., nums[r - 1], nums[r]]` and for each `l <= i < r`, `nums[i] < nums[i + 1]`.
**Example 1:**
```
Input: nums = [1,3,5,4,7]
Output: 3
Explanation: The longest continuous increasing subsequence is [1,3,5] with length 3.
Even though [1,3,5,7] is an increasing subsequence, it is not continuous as elements 5 and 7 are separated by element
4.
```
**Example 2:**
```
Input: nums = [2,2,2,2,2]
Output: 1
Explanation: The longest continuous increasing subsequence is [2] with length 1. Note that it must be strictly
increasing.
```
**Constraints:**
- `0 <= nums.length <= 10^4`
- `10^9 <= nums[i] <= 10^9`
## 题目大意
给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。连续递增的子序列 可以由两个下标 l 和 rl < r确定如果对于每个 l <= i < r都有 nums[i] < nums[i + 1] 那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列
## 解题思路
- 简单题这一题和第 128 题有区别这一题要求子序列必须是连续下标所以变简单了扫描一遍数组记下连续递增序列的长度动态维护这个最大值最后输出即可
## 代码
```go
package leetcode
func findLengthOfLCIS(nums []int) int {
if len(nums) == 0 {
return 0
}
res, length := 1, 1
for i := 1; i < len(nums); i++ {
if nums[i] > nums[i-1] {
length++
} else {
res = max(res, length)
length = 1
}
}
return max(res, length)
}
func max(a, b int) int {
if a > b {
return a
}
return b
}
```