C#を使用して、数値の配列から最長連続増加部分列の長さを見つける方法は?
LongestIncreaingSubsequenceは、配列から連続サブシーケンスの整数を返します。このメソッドにはforループがあり、これを繰り返して数値を追跡します。最終結果では、最大値が計算されます。すべての要素に一度アクセスするため、時間計算量はO(N)であり、ストレージスペースを使用していないため、空間計算量はO(1)です。
時間計算量 − O(N)
スペースの複雑さ − o(1)
例 − {2,4,6,5,8}
出力 − 3
例
public class Arrays{ public int longestIncreaingSubsequence(int[] nums){ if (nums == null || nums.Length == 0){ return -1; } int res = 0, count = 0; for (int i = 0; i < nums.Count(); i++){ if (i == 0 || nums[i] > nums[i - 1]){ count++; res = Math.Max(res, count); } else{ count = 1; } } return res; } } static void Main(string[] args){ int[] nums = { 1, 3, 5, 4, 7 }; Console.WriteLine(s.longestIncreaingSubsequence(nums)); }
出力
3
-
Pythonで最長の循環増加部分列の長さを見つけるプログラム
numsと呼ばれる数値のリストがあり、最も長く増加するサブシーケンスの長さを見つける必要があり、サブシーケンスがリストの先頭に折り返される可能性があると想定しています。 したがって、入力がnums =[6、5、8、2、3、4]の場合、最長増加部分列は[2、3、4、6、8]であるため、出力は5になります。 これを解決するには、次の手順に従います- a:=numsの2倍のサイズのリストを作成し、numsを2回入力します ans:=0 0からnumsのサイズの範囲のiの場合は、 dp:=新しいリスト 範囲iからnums+i-1のサイズのjの場合、do n:=a [j] k:=
-
Pythonの数値リストから最長の符号交互サブシーケンスの長さを見つけるプログラム
numsと呼ばれる数値のリストがあるとすると、連続する各数値の符号を反転させる最長のサブシーケンスの長さを見つける必要があります。 したがって、入力がnums =[1、3、-6、4、-3]の場合、[1、-6、4、-3]を選択できるため、出力は4になります。 これを解決するには、次の手順に従います- pos:=0、neg:=0 numsのnごとに、 n <0の場合、 neg:=pos + 1 それ以外の場合、 pos:=neg + 1 posとnegの最大値を返す 理解を深めるために、次の実装を見てみましょう- 例 class Solution: