สมมติว่าเรามีอาร์เรย์ของจำนวนเต็ม เราต้องหาความยาวของ subarray ที่เพิ่มขึ้นอย่างต่อเนื่องยาวนานที่สุด
ดังนั้นหากอินพุตเป็น [2,4,6,5,8] ผลลัพธ์จะเป็น 3 เนื่องจากลำดับการเพิ่มขึ้นอย่างต่อเนื่องที่ยาวที่สุดคือ [2,4,6] และความยาวของมันคือ 3
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ถ้าขนาดของ nums <=1 แล้ว −
- ขนาดส่งคืนของ nums
- ตอบ :=1 นับ :=1
- สำหรับการเริ่มต้น i :=0 เมื่อ i <ขนาดของ nums อัปเดต (เพิ่ม i ขึ้น 1) ทำ −
- ถ้า nums[i]
- (เพิ่มจำนวนขึ้น 1)
- answer :=จำนวนคำตอบและจำนวนสูงสุด
- ถ้า nums[i]
- มิฉะนั้น
- นับ :=1
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
#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; } }; main(){ Solution ob; vector<int> v = {2,4,6,5,8}; cout << (ob.findLengthOfLCIS(v)); }
อินพุต
{2,4,6,5,8}
ผลลัพธ์
3