タイトル説明
ソートされていない配列を指定し、そのソートされた形で連続する要素間の最大の差を見つけます。
配列は、以下の2つの要素が含まれている場合は0を返します。
効果の対象に
隣接するケースの順序付けられた配列における2つの数の最大差分値を求めるために必要な不規則配列を、与えられました。
要件:O(N)時間の複雑さと空間的複雑で完了しました。
例
E1
入力:[3,6,9,1] 出力:3
E2
入力:[10] 出力:0
問題解決のためのアイデア
コードの優れた効率を得るためにzkfairytaleコード@ LeetCodeをありがとうございます。
/(N - 1) - 最終結果のサイズ必要> = bucket_size =(MIN MAX)との間の差は、maxは、アレイ内の最大値であり、minは最小値であり、アレイ素子のn個のため、すべての数字は、分割することができます様々なサイズは、バケットをbucket_size。上記条件から理解、最終結果は以上bucket_sizeである必要があり、最大の差を得ることができる二つの隣接するバケット間の最大値と最小値を通過することが可能です。
複雑性分析
時間の複雑さ:O(ログ(N))
宇宙複雑:O(1)
コード
{ソリューションクラス パブリック: INT findPeakElement(ベクトル<整数> NUMS&){ リターン(NUMS、0、nums.size() - 1)を解く; } //バイナリサーチ INTは、(ベクトル<整数>&解決する 、NUMS、INT低ハイINT){ )==高い低IF( Low戻し; INT MID1 =(ハイ+低)/ 2; INT = MID1 MID2 + 1; // 2つのより大きな数の間の数値の位置を見つける (NUMS場合【MID1]> NUMS [MID2は]) ;(NUMS、低、MID1)を解く返す 他の リターン(NUMS、MID2、高)を解きます; } }。