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

โปรแกรมค้นหาอาร์เรย์ของความยาว k จากอาร์เรย์ที่กำหนดซึ่งมีความไม่เป็นธรรมขั้นต่ำใน python


สมมติว่าเรามีอาร์เรย์ A และอีกค่าหนึ่งคือ k เราต้องสร้างอาร์เรย์ arr ที่มีขนาด k bu รับองค์ประกอบจาก A และลดความไม่เป็นธรรมให้เหลือน้อยที่สุด สูตรนี้คำนวณความไม่เป็นธรรม -

(𝑚𝑎𝑥𝑖𝑚𝑢𝑚 𝑜𝑓 𝑎𝑟𝑟) − (𝑚𝑖𝑛𝑖𝑚𝑢𝑚 𝑜𝑓 𝑎𝑟𝑟)

ดังนั้น หากอินพุตเป็น A =[25, 120, 350, 150, 2500, 25, 35] และ k =3 ผลลัพธ์จะเป็น 10 เพราะเราสามารถหาองค์ประกอบ [25, 25, 35] ได้ ดังนั้นสูงสุด (arr) =35 และ min(arr) =25 ดังนั้นความแตกต่างคือ 10

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

  • i:=0
  • เรียงลำดับรายการ A
  • n :=ขนาดของ A
  • m:=A[n-1]
  • x:=0, y:=0
  • ในขณะที่ฉัน
  • ถ้า A[i+k-1] - A[i]
  • m :=A[i+k-1] - A[i]
  • ผม :=ผม + 1
  • คืนสินค้า
  • ตัวอย่าง

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

    def solve(A, k):
       i=0
       A.sort()
       n = len(A)
       m=A[n-1]
       x=0
       y=0
       while i<n-k:
          if(A[i+k-1]-A[i]<m):
             m=A[i+k-1]-A[i]
          i+=1
       return m
    
    A = [25, 120, 350, 150, 2500, 25, 35]
    k = 3
    print(solve(A, k))

    อินพุต

    [25, 120, 350, 150, 2500, 25, 35]

    ผลลัพธ์

    10