1. 题目
2. 考点
- 考取了双指针的用法
3. 解析
可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列
当r指针快速向右移动时 都会判断是否左边的值都小于右边的值,如果不小于,则更新左指针,获取到当前的最大值。
4.核心代码
# (双指针做法)
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
n = len(nums)
if n == 1: return 1
right = 1
left = 0
ans = 0
while right < n:
while right < n and nums[right - 1] < nums[right]:
right += 1
ans = max(ans, right - left)
left = right
right += 1
return ans
# 暴力解法
class Solution:
def findLengthOfLCIS(self, nums: List[int]) -> int:
n = len(nums)
if n == 1: return 1
m = 1
ret = 0
for i in range(1, n):
if nums[i-1] < nums[i]:
m += 1
else:
m = 1
ret = max(ret, m)
return ret