CCF第一題 最小差值Python解法

2021-10-21 12:05:38 字數 1503 閱讀 9024

試題編號: 201712-1

試題名稱: 最小差值

時間限制: 1.0s

記憶體限制: 256.0mb

問題描述:

問題描述

給定n個數,請找出其中相差(差的絕對值)最小的兩個數,輸出它們的差值的絕對值。

輸入格式

輸入第一行包含乙個整數n。

第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。

輸出格式

輸出乙個整數,表示答案。

樣例輸入

51 5 4 8 20

樣例輸出

樣例說明

相差最小的兩個數是5和4,它們之間的差值是1。

樣例輸入

59 3 6 1 3

樣例輸出

樣例說明

有兩個相同的數3,它們之間的差值是0.

資料規模和約定

對於所有評測用例,2 ≤ n ≤ 1000,每個給定的整數都是不超過10000的正整數。

————————————————

解法:這題最簡單的解法暴力求解,兩層for迴圈:

#輸入n個數字

n=int

(input()

)data=

input()

.split(

)for i in

range

(n):

data[i]

=int

(data[i]

)#將位置為0和1的數字只差作為最小差值

min=

abs(data[1]

-data[0]

)for i in

range

(n-1):

for j in

range

(i+1

,n):

t=abs(data[j]

-data[i]

)#更新最小差值

if tmin=t

print

(min)

注意比較時不能自身和自身做差,注意range()的範圍即可。

解法二:利用list.sort()排序,逐個作差即可

n=

int(

input()

)#處理第一行輸入

li=list

(map

(int

,input()

.split())

)#處理第二行輸入,用map()函式後轉為列表

li.sort(

)#對列表裡元素進行排序,預設從小到大

print

(min

(list

(map

(lambda x,y:y-x,li[:-

1],li[1:

])))

)

最後一行從裡到外分別用了,lambda匿名函式求y-x,這裡x對應li【:-1】是排序後的列表排除了最後乙個元素,y是排除了第乙個元素,兩兩作差,然後將map轉換為列表,用min輸出最小值

CCF 最小差值

試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個...

CCF模擬題 1最小差值(Python)

試題編號 201712 1 試題名稱 最小差值 時間限制 1.0s 記憶體限制 256.0mb 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出乙個整數,表示答案。51 5 4 8 20 ...

CCF考試 201712 1最小差值

問題描述 給定n個數,請找出其中相差 差的絕對值 最小的兩個數,輸出它們的差值的絕對值。輸入格式 輸入第一行包含乙個整數n。第二行包含n個正整數,相鄰整數之間使用乙個空格分隔。輸出格式 輸出乙個整數,表示答案。樣例輸入 5 1 5 4 8 20 樣例輸出 樣例說明 相差最小的兩個數是5和4,它們之間...