問題:https://leetcode.com/problems/online-election/
バイナリ探索問題は、主にハッシュマップを維持するために、2つの時点、投票者に対応する第一の予め計算現在時刻に基づきます。その後、半分にすることで、時間を見つけて、後にハッシュすることにより、対応する有権者を見つけます。
クラスTopVotedCandidate { パブリック: unordered_map < int型、int型 > 投票。 ベクトル < 整数 > 時間。 TopVotedCandidate(ベクトル < INT >&人物、ベクター< INT >&回){ unordered_map < INT、INT > スコア。 時間 = 時間; int型 maxscore = 0 ; int型のmaxperson。 以下のための(int型 I = 0; I <persons.size(); iは++ ) { [[i]は人]スコア ++ 。 もし(スコア[人[I]]> = maxscore) { maxscore = スコア[者[I]]。 maxperson = 人物[I]。 } 投票[回[I] = maxperson。 } } int型 Q(INT T){ それはオート = UPPER_BOUND(time.begin()、time.end()、T); それは = PREV(それを)。 返す投票を[* それ]。 } }。 / * * *あなたのTopVotedCandidateオブジェクトがインスタンス化され、などと呼ばれます: * TopVotedCandidate * OBJ =新しいTopVotedCandidate(人、回)。 * INT PARAM_1 = obj-> Q(t)は、 * /