演算法題 最小絕對值問題 Python

2021-08-20 09:55:20 字數 808 閱讀 5266

給定乙個數列 nums 裡面全是整數,且所有數字子不重複,求數列任中任意兩個值差的最小絕對值是多少?

因為沒有重複項,那麼可以採用桶排序,然後遍歷獲取最小值,其實如果有重複項,也沒有關係,依舊可以採用桶排序,如果排序後長度減少,那麼絕對值最小的一定是0,因為有重複項嗎。

# 面試題,最小絕對值,解題思路,桶排序

# @time :2018/5/31

# @author :liuyinxing

class solution:

def getsolution(self, nums):

n = len(nums)

if n < 2: return none

mn, mx = min(nums), max(nums)

slist = [none] * (mx - mn + 1)

rmin = float('inf')

for v in nums: # 桶排序

slist[v-mn] = v

slist = [v for v in slist if v != none]

for i in range(n-1):

rmin = min(abs(slist[i]-slist[i+1]), rmin)

return rmin

if __name__ == '__main__':

solu = solution()

nums = [3, 4, 5, 9, 0, 1, -1, 12]

print(solu.getsolution(nums))

絕對值最小

題目詳情 給你乙個陣列a n 請你計算出ans min a i a j 0 i,j 例如 a 則 a 0 a 0 1 1 2.a 0 a 1 1 4 5.a 0 a 2 1 3 2.a 1 a 1 4 4 8.a 1 a 2 4 3 1.a 2 a 2 3 3 6.所以ans 1.輸入描述 有多組測...

CSDN挑戰程式設計 《絕對值最小》

給你乙個陣列a n 請你計算出ans min a i a j 0 i,j 例如 a 則 a 0 a 0 1 1 2.a 0 a 1 1 4 5.a 0 a 2 1 3 2.a 1 a 1 4 4 8.a 1 a 2 4 3 1.a 2 a 2 3 3 6.所以ans 1.輸入描述 有多組測數資料,每...

CSDN挑戰程式設計 《絕對值最小》

給你乙個陣列a n 請你計算出ans min a i a j 0 i,j 比如 a 則 a 0 a 0 1 1 2.a 0 a 1 1 4 5.a 0 a 2 1 3 2.a 1 a 1 4 4 8.a 1 a 2 4 3 1.a 2 a 2 3 3 6.所以ans 1.輸入描寫敘述 有多組測數資料...