简单题,设置起点,每次遍历到不满足条件时更新长度即可,不过边界处理很容易出错。
class Solution {
public:
int findLengthOfLCIS(vector& nums) {
if(nums.empty()) return 0;
int res = 1, start = 0;
for(int i = 1; i < nums.size(); ++i){
if(nums[i] <= nums[i-1]){
res = max(res, i-start);
start = i;
}
if(i == nums.size()-1) res = max(res, i-start+1);//防止最后一次判断漏掉
}
return res;
}
};
可以修改为下面这样:
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
int n = nums.size(), res = 1, start = 0;
if(n == 0) return 0;
for(int i = 1; i < n; ++i){
if(nums[i] <= nums[i-1]){
res = max(res, i-start);
start = i;
}
}
return max(res, n-start);//防止最后一次判断漏掉
}
};
另外一点就是,leetcode如果这样使用max函数:
int res= 0;
max(res, nums.size());
会出错,因为nums.size()的返回值类型其实并不是int,会提示找不到函数用于这两个参数的max。