C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での最長連続増加部分列


整数の配列があるとします。最長の連続的に増加するサブアレイの長さを見つける必要があります。

したがって、入力が[2,4,6,5,8]の場合、出力は3になります。最長連続増加部分列は[2,4,6]であり、その長さは3です。

>

これを解決するには、次の手順に従います-

  • numsのサイズが<=1の場合、-
    • numsのサイズを返す
  • 回答:=1、カウント:=1
  • iを初期化する場合:=0、i
  • nums [i]
  • (カウントを1つ増やします)
  • 回答:=回答と数の最大値
  • それ以外の場合
    • count:=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

    1. 与えられたシーケンスの最長増加部分列を見つけるためのC++プログラム

      最長増加部分列は、1つの項目が前の項目よりも大きい部分列です。 ここでは、整数のセットから最長増加部分列の長さを見つけようとします。 Input: A set of integers. {0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15} Output: The length of longest increasing subsequence. Here it is 6. The subsequence is 0, 2, 6, 9, 13, 15. アルゴリズム longestSubSeq(subarray、n) 入力 :サブ配列と

    2. Pythonで最長増加部分列

      ソートされていない整数のリストがあるとします。最も長く増加するサブシーケンスを見つける必要があります。したがって、入力が[10,9,2,5,3,7,101,18]の場合、増加するサブシーケンスは[2,3,7,101] であるため、出力は4になります。 これを解決するには、次の手順に従います- trail:=長さ0からnums – 1の長さの配列で、これを0で埋めます サイズ:=0 numsのxの場合 i:=0、j:=サイズ 私はjではありません mid:=i +(j --i)/ 2 trails [mid]