【leetcode】1283。しきい値を考えると最小の除数を探します

次のように内容は次のとおりです。

整数の配列を考える  nums と、整数  threshold、我々は正の整数除数を選択し、それによって、すべての配列を分割し、除算の結果を合計します。結果は、上記に以下であるような最小の除数を探します  threshold

除算の各結果は、より最も近い整数に丸めより大きい又はその要素に等しいです。(例:7/3 = 3および10/2 = 5)。

答えがあることを保証されています。

例1:

入力:NUMS = [1,2,5,9]、閾値= 6 
出力:5 
説明:我々は、に和を得ることができる除数が1である場合、図17(1 + 2 + 5 + 9)
除数が4我々の場合7(1 + 1 + 2 + 3)に和を得ることができ、除数が5であれば合計が5(1 + 1 + 1 + 2)となります。

例2:

入力:NUMS = [2,3,5,7,11]、閾値= 11 
出力:3

例3:

入力:NUMS = [19]、閾値= 5 
出力:4

制約:

  • 1 <= nums.length <= 5 * 10^4
  • 1 <= nums[i] <= 10^6
  • nums.length <= threshold <= 10^6

問題解決のアイデア:除数が、より大きな小さく、計算され、バイナリ検索を使用することが可能です。

コードは以下の通りであります:

クラス溶液(オブジェクト):
     DEF smallestDivisor(自己、NUMS、閾値):
         "" " タイプNUMS:リスト[INT] タイプしきい値:INT 
        :RTYPE:INT 
        """ 
        RES = 0 
        ロー、ハイ = 1,1000000
         一方低<= 高:
            半ば =(低+高)/ 2 
            のカウント = 0
             のためのNUMS: + =(I / ミッド)
                 もし私%の半ば= 0:!数+ = 1
             の場合、カウント<=しきい値:
                RES = ミッド
                ハイ =中旬- 1
              =ミッド+ 1つの
         戻り RES

おすすめ

転載: www.cnblogs.com/seyjs/p/12026288.html