力扣 1300 轉變陣列後最接近目標值的陣列和

2021-10-07 04:54:36 字數 1964 閱讀 2759

給你乙個整數陣列 arr 和乙個目標值 target ,請你返回乙個整數 value ,使得將陣列中所有大於 value 的值變成 value 後,陣列的和最接近 target (最接近表示兩者之差的絕對值最小)。

如果有多種使得和最接近 target 的方案,請你返回這些整數中的最小值。

請注意,答案不一定是 arr 中的數字。

class

solution

:def

findbestvalue

(self, arr: list[

int]

, target:

int)

->

int:

arr.sort(

)return self.hel(arr,target)

defhel

(self,arr,target)

: n=

len(arr)

z=target/n

if z==arr[0]

:return arr[0]

elif z:if z-

int(z)

>

0.5:

return

int(z)+1

else

:return

int(z)

elif z>arr[0]

: i=

0while z>arr[i]

: target-=arr[i]

n-=1if n==0:

return arr[-1

] z=target/n

i+=1# if n==1:return arr[-1]

return self.hel(arr[i:

],target)

執行用時 :44 ms, 在所有 python3 提交中擊敗了98.92%的使用者

記憶體消耗 :15 mb, 在所有 python3 提交中擊敗了25.00%的使用者

class

solution

:def

findbestvalue

(self, arr: list[

int]

, target:

int)

->

int:

arr.sort(

) self.arr=arr

return self.hel(0,

len(arr)

,target)

defhel

(self,i,n,target)

: z=target/n

if z==self.arr[i]

:return self.arr[i]

elif z:if z-

int(z)

>

0.5:

return

int(z)+1

else

:return

int(z)

elif z>self.arr[i]

:while z>self.arr[i]

: target-=self.arr[i]

n-=1if n==0:

return self.arr[-1

] z=target/n

i+=1# if n==1:return arr[-1]

return self.hel(i,n,target)

執行用時 :40 ms, 在所有 python3 提交中擊敗了99.46%的使用者

記憶體消耗 :14.8 mb, 在所有 python3 提交中擊敗了25.00%的使用者

1300 轉變陣列後最接近目標值的陣列和

給你乙個整數陣列 arr 和乙個目標值 target 請你返回乙個整數 value 使得將陣列中所有大於 value 的值變成 value 後,陣列的和最接近 target 最接近表示兩者之差的絕對值最小 如果有多種使得和最接近 target 的方案,請你返回這些整數中的最小值。請注意,答案不一定是...

力扣 5177 轉變日期格式 顯示英文描述

轉變日期格式 顯示英文描述 給你乙個字串 date 它的格式為 day month year 其中 day 是集合 中的乙個元素。month 是集合 中的乙個元素。year 的範圍在 1900,2100 之間。請你將字串轉變為 yyyy mm dd 的格式,其中 yyyy 表示 4 位的年份。mm ...

力扣 K 次操作轉變字串

給你兩個字串 s 和 t 你的目標是在 k 次操作以內把字串 s 轉變成 t 在第 i 次操作時 1 i k 你可以選擇進行如下操作 切換 1 次字元的意思是用字母表中該字母的下乙個字母替換它 字母表環狀接起來,所以 z 切換後會變成 a 請記住任意乙個下標 j 最多只能被操作 1 次 如果在不超過...