LeetCode 910 最小差值 II(貪心)

2021-10-06 20:51:38 字數 1320 閱讀 4957

給定乙個整數陣列 a,對於每個整數 a[i],我們可以選擇x = -k 或是 x = k,並將 x 加到 a[i] 中。

在此過程之後,我們得到一些陣列 b。

返回 b 的最大值和 b 的最小值之間可能存在的最小差值

示例 1:

輸入:a =[1

], k =

0輸出:0

解釋:b =[1

]示例 2:

輸入:a =[0

,10], k =

2輸出:6

解釋:b =[2

,8]示例 3:

輸入:a =[1

,3,6

], k =

3輸出:3

解釋:b =[4

,6,3

] 1<= a.length <=

10000

0<= a[i]

<=

10000

0<= k <=

10000

類似題目:leetcode 908. 最小差值 i

class

solution

return

min(mindis, a[n-1]

-a[0])

;//第二種情況為同側偏置}}

;

68 ms 15 mb

class

solution

:# py3

defsmallestrangeii

(self, a: list[

int]

, k:

int)

->

int:

a.sort(

) mindis =

float

("inf"

) n =

len(a)

for i in

range

(n-1):

up =

max(a[i]

+k, a[n-1]

-k) down =

min(a[0]

+k, a[i+1]

-k) mindis =

min(mindis, up-down)

return

min(mindis, a[n-1]

-a[0])

# 第二種情況為同側偏置

212 ms 14.9 mb

leetcode 910 最小差值 II

給定乙個整數陣列a,對於每個整數a i 我們可以選擇x k或是x k,並將x加到a i 中。在此過程之後,我們得到一些陣列b。返回b的最大值和b的最小值之間可能存在的最小差值。首先排序,可以想到,大一些的估計都要 k,小一些的都要 k,但是這個分割點不好確定,所以迴圈遍歷查詢這個分割點就行。然後需要...

LeetCode刷題筆記 910 最小差值 II

給定乙個整數陣列 a,對於每個整數 a i 我們可以選擇 x k 或是 x k,並將 x 加到 a i 中。在此過程之後,我們得到一些陣列 b。返回 b 的最大值和 b 的最小值之間可能存在的最小差值。示例 1 輸入 a 7,8,8,5,2 k 4 輸出 5 示例 2 輸入 a 4,8,2,7,2 ...

LeetCode最小差值 I

給你乙個整數陣列 a,對於每個整數 a i 我們可以選擇處於區間 k,k 中的任意數 x 將 x 與 a i 相加,結果存入 a i 在此過程之後,我們得到一些陣列 b。返回 b 的最大值和 b 的最小值之間可能存在的最小差值。示例 1 輸入 a 1 k 0 輸出 0 解釋 b 1 示例 2 輸入 ...