นี่คือปัญหาเชิงสนุกสนาน มีอาเรย์ N องค์ประกอบ ต้องทำคิวรี่ Q ดังนี้:
Q(start, end) บ่งชี้ว่าจำนวนครั้งที่ตัวเลข 'p' เกิดขึ้นเท่ากับ 'p' ครั้งจาก start ถึง end
เช่น อาเรย์ {1, 5, 2, 3, 1, 3, 5, 7, 3, 9, 8} คิวรี่:
Q(1, 8) - 1 ปรากฏ 1 ครั้ง และ 3 ปรากฏ 3 ครั้ง คำตอบคือ 2
Q(0, 2) - 1 ปรากฏ 1 ครั้ง คำตอบคือ 1
อัลกอริทึม
query(s, e) -
Begin
get the elements and count the frequency of each element 'e' into one map
count := count + 1
for each key-value pair p, do
if p.key = p.value, then
count := count + 1
done
return count;
End
ตัวอย่างโค้ด C++
#include#include
ผลลัพธ์
Answer for Query 1 = 1 Answer for Query 2 = 2 Answer for Query 3 = 1 Answer for Query 4 = 1 Answer for Query 5 = 1 Answer for Query 6 = 0