Giả sử, chúng ta có một mảng chứa một số số nguyên. Chúng tôi tìm ra tất cả các mảng con liền kề từ mảng số đã cho và đưa nó vào một danh sách khác. Bây giờ, chúng ta thay thế mỗi mảng con bằng phần tử tối đa trong mảng con đó. Cũng có một số k được cung cấp cho chúng ta và chúng ta phải tìm xem có bao nhiêu mảng con lớn hơn số đã cho.
Vì vậy, nếu đầu vào là input_array =[5, 6, 7, 8], k =7, thì đầu ra sẽ là 4
Các mảng con liền kề từ mảng đầu vào đã cho là:{5}, {6}, {7}, {8}, {5, 6}, {6, 7}, {7, 8}, {5, 6, 7 }, {6, 7, 8}, {5, 6, 7, 8}
Nếu chúng tôi cập nhật các mảng con với phần tử tối đa trong chúng, thì các mảng con sẽ trở thành -
{5}, {6}, {7}, {8}, {6}, {7}, {8}, {7}, {8}, {8}.
Có 4 tập hợp mà phần tử lớn hơn 7.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- số lượng:=0
- liên tiếp:=0
- đối với mỗi x trong input_array, thực hiện
- nếu x> k, thì
- liên tiếp:=0
- nếu không,
- liên tiếp:=liên tiếp + 1
- count:=count + liên tiếp
- nếu x> k, thì
trả về kích thước của input_array * giá trị sàn của ((kích thước của input_array + 1) / 2) - số lượng
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
[5, 6, 7, 8], 7
Đầu ra
4