C++ 中的最長連續遞增子序列


假設我們有一個整數陣列,我們必須查詢最長連續遞增子陣列的長度。

因此,如果輸入類似於 [2,4,6,5,8],則輸出將為 3。因為最長連續遞增子序列是 [2,4,6],其長度為 3。

為解決這個問題,我們將按照以下步驟操作:

  • 如果陣列的長度 <= 1,則:
    • 返回陣列的長度
  • ans := 1、cnt := 1
  • 對於初始化 i := 0,當 i < 陣列的長度,更新(將 i 加 1),執行:
    • 如果 nums[i] < nums[i + 1],則:
      • (將 cnt 加 1)
      • ans := ans 和 cnt 中的最大值
    • 否則
      • cnt := 1
  • 返回 ans

讓我們看看以下實現以獲得更好的理解:

示例

 線上演示

#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

更新於:04-Jul-2020

763 次瀏覽

提升你的 職業

完成課程獲得認證

開始學習
廣告
© . All rights reserved.