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

โปรแกรมค้นหาอาร์เรย์ย่อยที่ยิ่งใหญ่ที่สุดของความยาวที่กำหนดใน python


สมมติว่าเรามีอาร์เรย์ที่มีค่าจำนวนเต็มต่างๆ และความยาวที่กำหนด k เราต้องหาอาร์เรย์ย่อยที่ยิ่งใหญ่ที่สุดจากอาร์เรย์ของความยาวที่กำหนด subarray1[i] ≠ subarry2[i] และ subarray1[i]> subarry2[i]

ดังนั้น หากอินพุตเท่ากับ nums =[5, 3, 7, 9], k =2 เอาต์พุตจะเป็น [7, 9]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เริ่ม :=ขนาดของ nums - k
  • max_element :=nums[start]
  • max_index :=เริ่ม
  • ขณะสตาร์ท>=0, ทำ
    • ถ้า nums[start]> max_element ไม่ใช่ศูนย์ ดังนั้น
      • max_element :=nums[start]
      • max_index :=เริ่ม
    • คืนค่า nums[จากดัชนี max_index เป็น max_index + k]
  • คืนค่า nums[จากดัชนี max_index เป็น max_index + k]

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

def solve(nums, k):
   start = len(nums) - k
   max_element = nums[start]
   max_index = start

   while start >= 0:
      if nums[start] > max_element:
         max_element = nums[start]
         max_index = start

      start -= 1

   return nums[max_index:max_index + k]

print(solve([5, 3, 7, 9], 2))

อินพุต

[5, 3, 7, 9], 2

ผลลัพธ์

[7, 9]