สมมติว่าเรามีอาร์เรย์ขนาด n หากองค์ประกอบในอาร์เรย์อยู่ในช่วงตั้งแต่ 0 ถึง k-1 โดยที่ k แสดงเป็นจำนวนเต็มบวกและ k <=n เราต้องหาจำนวนซ้ำสูงสุดในอาร์เรย์นี้
ดังนั้น หากอินพุตเป็น k =8 และ A =[3, 4, 4, 6, 4, 5, 2, 8] ผลลัพธ์จะเป็น 4
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดของ A
-
สำหรับผมอยู่ในช่วง 0 ถึง n ทำ
-
A[A[i] mod k] :=A[A[i] mod k] + k
-
-
max_val :=A[0]
-
ผลลัพธ์ :=0
-
สำหรับผมอยู่ในช่วง 1 ถึง n ทำ
-
ถ้า A[i]> max_val แล้ว
-
max_val :=A[i]
-
ผลลัพธ์ :=i
-
-
-
ส่งคืนผลลัพธ์
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def get_max_repeating(A, k): n = len(A) for i in range(n): A[A[i]%k] += k max_val = A[0] result = 0 for i in range(1, n): if A[i] > max_val: max_val = A[i] result = i return result A = [3, 4, 4, 6, 4, 5, 2, 8] k = 8 print(get_max_repeating(A, k))
อินพุต
[3, 4, 4, 6, 4, 5, 2, 8], 8
ผลลัพธ์
4