สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums ซึ่งองค์ประกอบทั้งหมดมีเอกลักษณ์เฉพาะตัว เราต้องหาความยาวของรายการย่อยที่ยาวที่สุดที่มีองค์ประกอบต่อเนื่องกัน
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3, 6, 7, 5, 4, 9] ผลลัพธ์จะเป็น 5 เนื่องจากรายการย่อยคือ [3, 6, 7, 5, 4] สิ่งนี้มีองค์ประกอบที่ต่อเนื่องกันทั้งหมด จาก 3 เป็น 7
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ret :=0
- สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ
- lhs :=nums[i]
- rhs :=nums[i]
- สำหรับ j ในช่วง i ถึงขนาดของ nums - 1 ทำ
- lhs :=ขั้นต่ำของ lhs และ nums[j]
- rhs :=สูงสุดของ rhs และ nums[j]
- ถ้า (rhs - lhs) เหมือนกับ (j - i) แล้ว
- ret :=สูงสุดของ ret และ (j - i + 1)
- คืนสินค้า
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(nums): ret = 0 for i in range(len(nums)): lhs = nums[i] rhs = nums[i] for j in range(i, len(nums)): lhs = min(lhs, nums[j]) rhs = max(rhs, nums[j]) if rhs - lhs == j - i: ret = max(ret, j - i + 1) return ret nums = [3, 6, 7, 5, 4, 9] print(solve(nums))
อินพุต
[3, 6, 7, 5, 4, 9]
ผลลัพธ์
1