數字基本題型,判斷是不是指定條件數列。題目解說有附正反表格比較,清楚表達題目內容。運作過程還附圖片解說,幫助程式碼了解。
中文版
建議先看英文版
給你一列數字,判斷數字差是否為1~(n-1)
Jolly | Not jolly |
---|---|
例:n ,a1...an | 例:n ,a1...an |
5, 1 ,4, 2, -1, 6 | 4, 1, 4, 2, 3, |
則數字差為 3 ,2, 3 ,7 | 則數字差為 3 ,2 ,1 |
import sys
def inp():
sinp=sys.stdin.readline()
while (sinp!=""):
sinp=sinp.replace("\n","")
arinp=list(map(int,sinp.split()))
#print(arinp)#
Jolly(arinp)
sinp=sys.stdin.readline()
讀取測資
def Jolly(ar):
jo=isjolly(ar)
if (jo):
print("Jolly")
else:
print("Not jolly")
答案輸出
def isjolly(ar):
d=dict()#字典初始化
for i in range(1,ar[0],1):#將數字差填入字典中,並設為0
d[i]=0
#print(d)#
for j in range(1,ar[0],1):
ind=abs(ar[j]-ar[j+1])#計算數字差(abs=絕對值)
#print(ind,d.get(ind))
if(d.get(ind)==0):#字典這個數字差為0嗎?
d[ind]=1#是,第一次出現
else:
return 0#否,之前出現過,或是距離差超過範圍
return 1
inp()
感謝撥冗閱讀,目前還在學習Python這門語言,需要改正地方歡迎留言。
如果有正在解的題目,也可以一起討論。