เมธอด LongestIncreasingSubsequence คืนค่าความยาวของลำดับย่อยที่เพิ่มขึ้นต่อเนื่องจากอาร์เรย์ ใช้ลูป for วนลูปและนับจำนวน ผลลัพธ์สุดท้ายจะได้ค่าสูงสุด Time Complexity O(N) เพราะเข้าถึงแต่ละอิลิเมนต์ครั้งเดียว Space Complexity O(1) เพราะไม่ใช้พื้นที่เก็บข้อมูลเพิ่ม
ตัวอย่าง: {2, 4, 6, 5, 8}
ผลลัพธ์: 3 (ลำดับ 2, 4, 6)
ตัวอย่างโค้ด
public class Arrays
{
public int LongestIncreasingSubsequence(int[] nums)
{
if (nums == null || nums.Length == 0)
{
return -1;
}
int res = 0, count = 0;
for (int i = 0; i < nums.Length; 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 };
Arrays s = new Arrays();
Console.WriteLine(s.LongestIncreasingSubsequence(nums));
}ผลลัพธ์
3