Mô tả bài toán
Cho mảng số nguyên, tìm độ dài dãy con liên tiếp tăng dần chặt dài nhất.
Ví dụ: [2,4,6,5,8] → Dãy con tăng dài nhất: [2,4,6] độ dài 3.
Giải pháp (Duyệt tuyến tính)
- Nếu mảng ≤ 1 phần tử → trả về kích thước.
- Khởi tạo
answer = 1, count = 1. - Duyệt
i = 0..n-2:- Nếu
nums[i] < nums[i+1]→count++, cập nhậtanswer. - Ngược lại → reset
count = 1.
- Nếu
Ví dụ minh họa
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
if (nums.size() <= 1) return nums.size();
int answer = 1, count = 1;
for (int i = 0; i < nums.size() - 1; i++) {
if (nums[i] < nums[i + 1]) {
count++;
answer = max(answer, count);
} else {
count = 1;
}
}
return answer;
}
};
int main() {
Solution ob;
vector<int> v = {2,4,6,5,8};
cout << ob.findLengthOfLCIS(v);
return 0;
}
Đầu vào
{2,4,6,5,8}
Đầu ra
3