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