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

โปรแกรม Python หาจำนวนชุดที่มากกว่าค่าที่กำหนด


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

ดังนั้น หากอินพุตเป็นเหมือน input_array =[5, 6, 7, 8], k =7 ผลลัพธ์จะเป็น 4

อาร์เรย์ย่อยที่อยู่ติดกันจากอาร์เรย์อินพุตที่กำหนด ได้แก่:{5}, {6}, {7}, {8}, {5, 6}, {6, 7}, {7, 8}, {5, 6, 7 }, {6, 7, 8}, {5, 6, 7, 8}

หากเราอัปเดตอาร์เรย์ย่อยที่มีองค์ประกอบสูงสุดในอาร์เรย์ย่อย อาร์เรย์ย่อยจะกลายเป็น −

{5} {6} {7} {8} {6} {7} {8} {7} {8} {8}.

มี 4 ชุดที่องค์ประกอบมากกว่า 7

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

  • นับ :=0
  • ติดต่อกัน :=0
  • สำหรับแต่ละ x ใน input_array ทำ
    • ถ้า x> k แล้ว
      • ติดต่อกัน :=0
    • มิฉะนั้น
      • ติดต่อกัน :=ต่อเนื่องกัน + 1
      • นับ :=นับ + ต่อเนื่อง

ขนาดส่งคืนของ input_array * ค่าพื้นของ ((ขนาดของ input_array + 1) / 2) - นับ

ตัวอย่าง

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

def solve(input_array, k):
   count = 0
   consecutive = 0
   for x in input_array:
      if x > k:
         consecutive = 0
      else:
         consecutive += 1
         count += consecutive
   return len(input_array) * (len(input_array) + 1) // 2 - count
print(solve([5, 6, 7, 8], 7))

อินพุต

[5, 6, 7, 8], 7

ผลลัพธ์

4