Giả sử chúng ta có một mảng được gọi là arr, mảng này chứa các phần tử duy nhất và chúng ta cũng có một giá trị k khác. Bây giờ hãy xem xét một trò chơi mà chúng ta lấy hai phần tử đầu tiên của mảng. Trong mỗi lượt, chúng ta so sánh arr [0] với arr [1], giá trị lớn hơn sẽ thắng và giữ nguyên ở vị trí 0 và giá trị nhỏ hơn di chuyển về cuối mảng. Trò chơi này sẽ kết thúc khi một giá trị thắng được k vòng liên tiếp. Chúng ta phải tìm ra người chiến thắng trong mảng.
Vì vậy, nếu đầu vào là arr =[1,5,6,3,4,2] và k =3, thì đầu ra sẽ là 6 vì
-
vòng 1, arr =[1,5,6,3,4,2], đội chiến thắng 5, số trận thắng cho 5 là 1
-
vòng 2, arr =[5,6,3,4,2,1], đội thắng 6, số trận thắng cho 6 là 1
-
vòng 3, arr =[6,3,4,2,1,5], đội thắng 6, số trận thắng cho 6 là 2
-
vòng 3, arr =[6,4,2,1,5,3], đội thắng 6, số trận thắng cho 6 là 3
Vì vậy, người chiến thắng là 6 vì nó đã thắng ba lần (k =3)
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
l:=kích thước của arr
-
trước:=arr [0]
-
đếm:=0
-
đối với tôi trong phạm vi từ 1 đến l - 1, hãy thực hiện
-
nếu trước> arr [i], thì
-
count:=count + 1
-
-
nếu không,
-
trước:=arr [i]
-
đếm:=1
-
-
nếu số đếm bằng k, thì
-
trả lại trước
-
-
-
trả lại trước
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
def solve(arr, k): l = len(arr) prev = arr[0] count = 0 for i in range(1, l): if prev > arr[i]: count+=1 else: prev = arr[i] count = 1 if count == k: return prev return prev arr = [1,5,6,3,4,2] k = 3 print(solve(arr, k))
Đầu vào
[1,5,6,3,4,2], 3
Đầu ra
6