国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python 計(jì)算數(shù)組中每個(gè)數(shù)字出現(xiàn)多少次--“Bucket”桶的思想

2020-02-16 11:11:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

題目:

這里寫圖片描述

解法一:比較元素是否相等

思路說(shuō)明:

這種應(yīng)該是普通人最先想到的解法,先獲取到數(shù)組之后進(jìn)行有小到大排序,然后初始化一個(gè)min=0(代表新數(shù)字的開始角標(biāo)),然后遍歷新數(shù)組的每一個(gè)元素,如果兩個(gè)元素不相等,count等于i-min,然后再把i賦值給min,當(dāng)i遍歷到最后一個(gè)元素時(shí),count等于數(shù)組長(zhǎng)度-min(這里的min是上一輪循環(huán)后最后一組數(shù)字的第一個(gè)元素的角標(biāo)),當(dāng)然這種解法面試官不會(huì)喜歡?

(m, n) = input().split()ar = [int(x) for x in input().split()]res = []ar.sort()min = 0for i in range(1,len(ar)) :  if ar[i-1] != ar[i]:    count = i - min    min = i    res.append(str(count))  if i == (len(ar)-1):    count = len(ar)-min    res.append(str(count))print(' '.join(res))

解法二:桶計(jì)算

思路:獲取到輸入的數(shù)組之后,獲取該數(shù)組的長(zhǎng)度,因?yàn)楦鶕?jù)題目N<=20,也就是說(shuō)數(shù)組的元素不會(huì)超過(guò)20,那么我們定義一個(gè)1維,長(zhǎng)度為20的數(shù)組res,并初始化元素為0是足夠的。先上代碼,再進(jìn)行解析

(m, n) = input().split()ar = [int(x) for x in input().split()]result = []res = [0 for x in range(20)]for a in ar:  res[a-1]+=1for r in res:  if r != 0:    result.append(str(r))print(' '.join(result))

以上的而核心代碼就在于這兩行

for a in ar:  res[a-1]+=1

我們遍歷輸入的數(shù)組ar的每一個(gè)元素,用res[a]的數(shù)值代表a出現(xiàn)的次數(shù),我們每次循環(huán),總能找到合適的桶存放a,那么我們直接+1即可,比如說(shuō)ar = [2, 2, 1, 4]

循環(huán)1: a = 2 res[2] = 0+1 = 1 循環(huán)2: a = 2 res[2] = 1 +1 =2 循環(huán)3: a = 1 res[1] = 0+1 = 1 循環(huán)4: a = 4 res[4] = 0+1 = 1 這樣我們得到的 res = [0, 1 ,2 ,0 ,1 ,0 ····]

延伸:桶排序

根據(jù)以上的思路我們得到了一個(gè)新的數(shù)組res,仔細(xì)分析這個(gè)數(shù)組的意思,1出現(xiàn)1次,2出現(xiàn)2次,4出現(xiàn)1次,因?yàn)閿?shù)組的特性保證元素的角標(biāo)是從小到大排序,這就衍生出了桶排序的概念,忽略0的情況,用兩個(gè)循環(huán),外層循環(huán)遍歷len(res)次,角標(biāo)為i,內(nèi)層循環(huán)遍歷res[i]次,角標(biāo)為j,意思就是有幾個(gè)輸出幾個(gè),例如1有1個(gè),那就輸出1個(gè),2有兩個(gè),就循環(huán)兩次,輸出兩次,4有1個(gè),就輸出一個(gè),擴(kuò)展代碼如下:

#省略上述代碼for i in range(len(res)):  if res[i] != 0:    for j in range(res[i]):      result.append(i)print(result)

執(zhí)行結(jié)果如下:

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌拉特前旗| 民权县| 株洲县| 阿鲁科尔沁旗| 越西县| 定边县| 沁水县| 汉寿县| 伊金霍洛旗| 邯郸县| 平塘县| 永修县| 扶绥县| 舞钢市| 东阿县| 南乐县| 清丰县| 黎川县| 泸定县| 古浪县| 万荣县| 女性| 新龙县| 枣阳市| 怀来县| 九龙县| 新河县| 城市| 庆阳市| 阳曲县| 宜兰县| 涟水县| 凌云县| 钟山县| 同江市| 商丘市| 深水埗区| 莒南县| 读书| 东港市| 绩溪县|