สมมติว่าเรามีอาร์เรย์ที่มีตัวเลขจำนวนเต็มหลายจำนวน เราค้นหาอาร์เรย์ย่อยที่อยู่ติดกันทั้งหมดจากอาร์เรย์ของตัวเลขที่กำหนดและใส่ลงในรายการอื่น ตอนนี้ เราแทนที่แต่ละ 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
- นับ :=นับ + ต่อเนื่อง
- ถ้า x> k แล้ว
ขนาดส่งคืนของ 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