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

โปรแกรมค้นหาค่าสูงสุดของรายการย่อยขนาด k ใน Python


สมมติว่าเรามีรายการ nums และอีกค่าหนึ่งคือ k เราต้องหาค่าสูงสุดของแต่ละรายการย่อยที่มีขนาด k

ดังนั้น หากอินพุตเป็น nums =[12, 7, 3, 9, 10, 9] k =3 ผลลัพธ์จะเป็น [12, 9, 10, 10]

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

  • ถ้า k> ขนาดของ nums แล้ว

    • กลับรายการว่าง

  • res :=รายการใหม่

  • อุณหภูมิ :=nums[0]

  • อุณหภูมิ :=npoint :=0

  • สำหรับฉันในช่วง 0 ถึง k − 1 ทำ

    • ถ้า nums[i]> temp แล้ว

      • อุณหภูมิ :=nums[i]

      • จุด :=ผม

  • ใส่ temp ที่ท้าย res

  • สำหรับฉันในช่วง k ถึงขนาดของ nums ทำ

    • ถ้า nums[i]

      • อุณหภูมิ :=nums[point]

    • มิฉะนั้นเมื่อ nums[i] =k แล้ว

      • จุด :=ผม − k + 1

      • สำหรับ j ในช่วง i − k + 1 ถึง i ทำ

        • ถ้า nums[j]> nums[point] แล้ว

          • จุด :=เจ

      • อุณหภูมิ :=nums[point]

    • มิฉะนั้น

      • อุณหภูมิ :=nums[i]

      • จุด :=ผม

    • ใส่ temp ที่ท้าย res

  • ผลตอบแทน

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

ตัวอย่าง

class Solution:
   def solve(self, nums, k):
      if k > len(nums):
         return []
      res = []
      temp = nums[0]
      point = 0
      for i in range(k):
         if nums[i] > temp:
            temp = nums[i]
            point = i
      res.append(temp)
      for i in range(k, len(nums)):
         if nums[i] < temp and (i − point) < k:
            temp = nums[point]
         elif nums[i] < temp and (i − point) >= k:
            point = i − k + 1
            for j in range(i − k + 1, i + 1):
               if nums[j] > nums[point]:
                  point = j
            temp = nums[point]
         else:
            temp = nums[i]
            point = i
         res.append(temp)
      return res
ob = Solution()
nums = [12, 7, 3, 9, 10, 9]
k = 3
print(ob.solve(nums, k))

อินพุต

[12, 7, 3, 9, 10, 9], 3

ผลลัพธ์

[12, 9, 10, 10]