
エントリーの編集

エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
二分木を用いた数値配列の部分範囲内の最大値取得 - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています

- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
二分木を用いた数値配列の部分範囲内の最大値取得 - Qiita
function findMax(nums, start, end, minValue = -Infinity) { let maxValue = minValue; for (let i = ... function findMax(nums, start, end, minValue = -Infinity) { let maxValue = minValue; for (let i = start; i < end; i++) { maxValue = Math.max(maxValue, nums[i]); } return maxValue; } ただしこの方法では、一度の検索が線形時間であるため、数万要素数ある配列の場合、何度も範囲を変えながら最大値を求めるような場合には、とても大きな時間がかかってしまいます(繰り返したときの計算量はO(N^2))。 二分木による実装 そこで、これを回避するには、最大値を収めた二分木を一度作成することによって、対数時間で検索できるようになります(繰り返したときの計算量はO(NlogN))。 function createMaxTree(num