看了别人int max 后面的比我第三次写的还简洁,没有 if else if 这么乱。
就再思考: for(int i=1;i<a;i++) 肯定是i=0开始,这是traditional;
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
int a=nums.size();
int cnt=1;
if (a==0) return 0;
int max=1;
for(int i=0;i<a;i++)
{
if( nums[i+1]<=nums[i])
{
if (max<cnt) max=cnt;
cnt=1;
}
else if(i==a-1)
{
if (max<cnt) max=cnt;
}
else
cnt=cnt+1;
}
return max;
}
};
不行,判断语句简洁了,逻辑else if 去不掉。
思维定式。!!!
在看了一眼 if (nums[i] < nums[i+1],知道自己的比较方向弄错了。。
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
int a=nums.size();
int cnt=1;
if (a==0) return 0;
int max=1;
for(int i=0;i<a-1;i++)
{
if( nums[i+1]>nums[i])
{
cnt=cnt+1;
if (max<cnt) max=cnt;
}
else
cnt=1;
}
return max;
}
};
简洁多了!!!!!!!i=a-1也是试出来的。
看看别人的原版:
Given an unsorted array of integers, find the length of longest continuous
increasing subsequence.
Example 1:
Input: [1,3,5,4,7] Output: 3 Explanation: The longest continuous increasing subsequence is [1,3,5], its length is 3. Even though [1,3,5,7] is also an increasing subsequence, it‘s not a continuous one where 5 and 7 are separated by 4.
Example 2:
Input: [2,2,2,2,2] Output: 1 Explanation: The longest continuous increasing subsequence is [2], its length is 1.
在未排序的数组中,找出最长递增序列的长度
c++(16ms):
1 class Solution { 2 public: 3 int findLengthOfLCIS(vector<int>& nums) { 4 int len = nums.size() ; 5 if (len < 1) 6 return 0 ; 7 int Max = 1 ; 8 int n = 1 ; 9 for (int i = 0 ; i < len-1 ; i++){ 10 if (nums[i] < nums[i+1]) 11 n++ ; 12 else 13 n = 1 ; 14 if (n > Max) 15 Max = n ; 16 } 17 return Max ; 18 } 19 };
max替换在最后,更简洁优美。