Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#을 사용하여 숫자 배열에서 가장 긴 연속 증가 부분 시퀀스의 길이를 찾는 방법은 무엇입니까?


LongestIncreaingSubsequence는 배열에서 연속 하위 시퀀스의 정수를 반환합니다. 이 메서드에는 숫자를 반복하고 추적하는 for 루프가 있습니다. 최종 결과에는 Max가 계산됩니다. 모든 요소를 ​​한 번만 방문하기 때문에 시간 복잡도는 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