สมมติว่าเรามีอาร์เรย์ที่เรียกว่า arr ซึ่งมีองค์ประกอบเฉพาะและเรามีค่าอื่นด้วย k ตอนนี้ให้พิจารณาเกมที่เรานำสององค์ประกอบแรกของอาร์เรย์ ในแต่ละเทิร์น เราเปรียบเทียบ arr[0] กับ arr[1] และค่าที่มากกว่าจะเป็นผู้ชนะและยังคงอยู่ที่ตำแหน่ง 0 และค่าที่น้อยกว่าจะย้ายไปที่ส่วนท้ายของอาร์เรย์ เกมนี้จะจบลงเมื่อค่าชนะ k รอบติดต่อกัน เราต้องหาผู้ชนะจากอาร์เรย์
ดังนั้น หากอินพุตเป็นเหมือน arr =[1,5,6,3,4,2] และ k =3 ผลลัพธ์จะเป็น 6 เพราะ
-
รอบที่ 1 arr =[1,5,6,3,4,2] ผู้ชนะ 5 นับชนะสำหรับ 5 คือ 1
-
รอบที่ 2 arr =[5,6,3,4,2,1] ผู้ชนะ 6 นับชนะสำหรับ 6 คือ 1
-
รอบที่ 3, arr =[6,3,4,2,1,5] ผู้ชนะ 6, นับชนะสำหรับ 6 คือ 2
-
รอบที่ 3, arr =[6,4,2,1,5,3] ผู้ชนะ 6, การนับชนะสำหรับ 6 คือ 3
ดังนั้นผู้ชนะคือ 6 เนื่องจากชนะสามครั้ง (k =3)
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
l :=ขนาดของ arr
-
ก่อนหน้า :=arr[0]
-
นับ :=0
-
สำหรับฉันอยู่ในช่วง 1 ถึง l - 1 ทำ
-
ถ้าก่อนหน้า> arr[i] แล้ว
-
นับ :=นับ + 1
-
-
มิฉะนั้น
-
ก่อนหน้า :=arr[i]
-
นับ :=1
-
-
ถ้านับเท่ากับ k แล้ว
-
ย้อนกลับก่อนหน้า
-
-
-
ย้อนกลับก่อนหน้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
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))
อินพุต
[1,5,6,3,4,2], 3
ผลลัพธ์
6