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

โปรแกรมค้นหาความยาวของรายการย่อยที่ยาวที่สุดติดต่อกันด้วยองค์ประกอบเฉพาะใน Python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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