สมมติว่าเรามีอาร์เรย์ที่มีค่าจำนวนเต็มต่างๆ และความยาวที่กำหนด 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[start]> max_element ไม่ใช่ศูนย์ ดังนั้น
- คืนค่า 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]