Python|力扣周賽2

歡迎點擊「演算法與編程之美」↑關注我們!

本文首發於微信公眾號:"演算法與編程之美",歡迎關注,及時了解更多此系列文章。

問題描述

你一個整數數組nums和一個正整數threshold,你需要選擇一個正整數作為除數,然後將數組裡每個數都除以它,並對除法結果求和。

請你找出能夠使上述結果小於等於閾值 threshold 的除數中最小的那個。 每個數除以除數後都向上取整,比方說7/3=3,10/2=5。 題目保證一定有解

解決方案

樣式要求:

示例 1: 輸入:nums = [1,2,5,9], threshold = 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], threshold = 11 輸出:3 示例 3: 輸入:nums = [19], threshold = 5 輸出:4 提示: 1 <= nums.length <= 5 * 10^4 1 <= nums[i] <= 10^6 nums.length <= threshold <= 10^6

首先遍歷除數

然後遍曆數組

最後判斷

Python代碼:

def fun(nums,threshold): for j in range(1,max(nums)+1): x=0 for i in nums: if i%j==0: x+=(i/j) else: x+=(i//j)+1 if x<=threshold: return j

END

實習編輯 | 王楠嵐

責 編 | 王自強

where2go 團隊