Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เซิร์บซีเควลเพิ่มขึ้นติดกันยาวที่สุดใน C++

ปัญหา

สมมติว่าเรามีอาร์เรย์ของจำนวนเต็ม เราต้องหาความยาวของเซิร์บอาร์เรย์เพิ่มขึ้นติดกันที่ยาวที่สุด

เช่น ถ้าผนวกเข้าเป็น [2,4,6,5,8] ผลลัพธ์จะเป็น 3 เนื่องจากเซิร์บซีเควลเพิ่มขึ้นติดกันที่ยาวที่สุดคือ [2,4,6] และความยาวคือ 3

วิธีแก้ปัญหา

  1. ถ้าขนาดของ nums <= 1: คืนค่าขนาดของ nums
  2. answer := 1, count := 1
  3. for i := 0 ถึง ขนาดของ nums - 2 ทำ:
    • ถ้า nums[i] < nums[i+1]: เพิ่ม count ขึ้น 1; answer := max ของ answer และ count
    • มิฉะนั้น: count := 1
  4. คืนค่า answer

ตัวอย่างโค้ด C++

#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)); 
}

อินพุต

{2,4,6,5,8}

เอาต์พุต

3