Conversation
| - インプットを全保持,降順でソート,nthを返す | ||
| - 上記の改良版として降順ソートしてn個だけ保持しておき,末尾を返す方針 | ||
| - 最初にソートして,末尾からn個分だけ保持する.その後はAddの度に2分探索を使って挿入位置を特定し,挿入する.この時点で昇順でn+1の長さになっているので,先頭から2番目(i=1)を返すと,大きい数値からn番目を返したことになる | ||
| - 最小ヒープを利用する方法(まだ理解はできていない) |
There was a problem hiding this comment.
自分が仮にこの問題を面接官として出題するとしたら、ヒープまたは二分木等を用いて、各操作を O(log n) で行う解法を想定すると思います。ヒープや二分木は常識に含まると思います。ただ、自力でヒープや二分木を書ききるところまでは期待しないと思います。
There was a problem hiding this comment.
コメントありがとうございます
ただ、自力でヒープや二分木を書ききるところまでは期待しないと思います。
この部分、今回の例で言うと 'container/heap' を使えることは期待するが、その内部実装を再現できることは期待しないという意味と理解しました(読んではおきます)
今後の練習でheapを実装の選択肢として挙げられるようにしていきます🫡
There was a problem hiding this comment.
少し語弊がありました。申し訳ありません。
ヒープについては、おおよそどのようなデータ構造で、どのような処理を行っているかは常識に含まれると思います。一方、コーディング面接のその場で書ききれることは期待しないと思います。
二分木 (正確には二分探索木) については、おおよそどのようなデータ構造で、どのような処理を行っているかは常識に含まれると思います。また、木を平衡させないと O(log n) で処理できないですとか、木を平衡させるにあたり、 ALV 木、赤黒木、といった亜種があり、それぞれおおよそどのようなことを行っているかは常識に含まれると思います。
There was a problem hiding this comment.
ありがとうございます
ヒープと二分木で常識の度合いが異なるということでしょうか
There was a problem hiding this comment.
ヒープと二分木に限らず、すべて度合いが異なるように思います。このあたりは、問題を解き進める際に、他の参加者のソースコードを読んだり、レビューコメントを読んでつかんでいくことをお勧めいたします。
https://leetcode.com/problems/kth-largest-element-in-a-stream/description/