classSolution { public: intfindLengthOfLCIS(vector<int>& nums){ int ret = 1; // 结果长度 int cur = 1; // 当前的长度 // 从1开始遍历,因为0只有一个元素,没有意义 for (int i = 1; i < nums.size(); i++) { // 因为要求连续,所以只需要判断前一位就够了。 if (nums[i] > nums[i - 1]) { cur = cur + 1; } else { cur = 1; // 其他情况,重置为1,重新开始计算 } // 更新结果最大值 if (cur > ret) { ret = cur; } } return ret; } };
顺带贴一下官方题解的贪心代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
classSolution { public: intfindLengthOfLCIS(vector<int>& nums){ int ans = 0; int n = nums.size(); int start = 0; for (int i = 0; i < n; i++) { if (i > 0 && nums[i] <= nums[i - 1]) { start = i; } ans = max(ans, i - start + 1); } return ans; } };