剣はオファーを指します—53。ソートされた配列に数値が現れる回数—分析とコード(Java)

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、その他

何もありません。

おすすめ

転載: blog.csdn.net/zml66666/article/details/110942434