Swordはoffer-53を指します。ソートされた配列に数値が表示される回数-分析とコード[Java]
1.タイトル
並べ替えられた配列に数値が表示される回数を数えます。
2、分析とコード
1.二分探索
(1)考える
トピックは並べ替えられた配列であるため、バイナリ検索のアイデアを組み合わせて、配列内の対応する番号の最初と最後の位置を見つけ、回数を計算できます。
(2)コード
public class Solution {
public int GetNumberOfK(int [] array , int k) {
if (array == null || array.length == 0 || k < array[0] || k > array[array.length - 1])
return 0;
int left, right;
if (array[0] == k)
left = -1;
else
left = BiSearch(array, k - 1, 0, array.length);
if (array[array.length - 1] == k)
right = array.length - 1;
else
right = BiSearch(array, k, left, array.length);
return right - left;
}
public int BiSearch(int [] array, int k, int l, int r) {
int m;
while (l < r - 1) {
m = (l + r) >> 1;
if (array[m] <= k)
l = m;
else
r = m;
}
return l;
}
}
(3)結果
実行時間:13ms、占有メモリ:9296k。
3、その他
何もありません。