Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

จะค้นหาความยาวของการเพิ่มขึ้นอย่างต่อเนื่องที่ยาวที่สุดจากอาร์เรย์ของตัวเลขโดยใช้ C # ได้อย่างไร


LongestIncreaingSubsequence คืนค่าจำนวนเต็มของลำดับย่อยที่ต่อเนื่องกันจากอาร์เรย์ วิธีนี้มี for loop ซึ่งจะวนซ้ำและติดตามตัวเลข ผลลัพธ์สุดท้ายจะมีการคำนวณสูงสุด ความซับซ้อนของเวลาคือ 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