【题目】
在选举中,第i
张票是在时间为times[i]
时投给persons[i]
的。
现在,我们想要实现下面的查询函数:TopVotedCandidate.q(int t)
将返回在t
时刻主导选举的候选人的编号。
在t
时刻投出的选票也将被计入我们的查询之中。在平局的情况下,最近获得投票的候选人将会获胜。
【代码】
class TopVotedCandidate {
public:
vector<pair<int, int>> li;
TopVotedCandidate(vector<int> persons, vector<int> times) {
int max_count = 0, max_count_person = 0;
map<int, int> record;
for(int i = 0; i < persons.size(); i++){
auto res = record.find(persons[i]);
if(res != record.end())
{
record[persons[i]] ++;
}
else
{
record[persons[i]] = 1;
}
if(record[persons[i]] >= max_count)
{
max_count = record[persons[i]];
max_count_person = persons[i];
}
li.push_back({times[i], max_count_person});
}
}
int q(int t) {
int idx = 0;
for(; idx < li.size(); idx++){
if(li[idx].first > t){
break;
}
}
return li[idx-1].second;
}
};
/**
* Your TopVotedCandidate object will be instantiated and called as such:
* TopVotedCandidate obj = new TopVotedCandidate(persons, times);
* int param_1 = obj.q(t);
*/