亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2017年12月19日 23:48:22   作者:七度上弦  
這篇文章主要介紹了python 計(jì)算數(shù)組中每個(gè)數(shù)字出現(xiàn)多少次--“Bucket”桶的思想,需要的朋友可以參考下

題目:

這里寫(xiě)圖片描述

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

思路說(shuō)明:

這種應(yīng)該是普通人最先想到的解法,先獲取到數(shù)組之后進(jìn)行有小到大排序,然后初始化一個(gè)min=0(代表新數(shù)字的開(kāi)始角標(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 = 0
for 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]+=1
for 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é)果如下:

相關(guān)文章

  • 使用PyInstaller將Pygame庫(kù)編寫(xiě)的小游戲程序打包為exe文件及出現(xiàn)問(wèn)題解決方法

    使用PyInstaller將Pygame庫(kù)編寫(xiě)的小游戲程序打包為exe文件及出現(xiàn)問(wèn)題解決方法

    這篇文章主要介紹了使用PyInstaller將Pygame庫(kù)編寫(xiě)的小游戲程序打包為exe文件的方法,給大家介紹了通過(guò)Pyinstaller打包Pygame庫(kù)寫(xiě)的小游戲程序出現(xiàn)的問(wèn)題及解決方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python中文編碼知識(shí)點(diǎn)

    Python中文編碼知識(shí)點(diǎn)

    在本篇文章里小編給大家分享了關(guān)于Python中文編碼的相關(guān)知識(shí)點(diǎn)以及對(duì)應(yīng)實(shí)例內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2019-02-02
  • Python驗(yàn)證碼識(shí)別處理實(shí)例

    Python驗(yàn)證碼識(shí)別處理實(shí)例

    這篇文章主要介紹了Python驗(yàn)證碼識(shí)別處理實(shí)例,實(shí)現(xiàn)過(guò)程講解很詳細(xì),感興趣的小伙伴們可以參考一下
    2015-12-12
  • 使用Python的地理可視化庫(kù)進(jìn)行地圖動(dòng)畫(huà)的制作方法

    使用Python的地理可視化庫(kù)進(jìn)行地圖動(dòng)畫(huà)的制作方法

    隨著數(shù)據(jù)科學(xué)和可視化的迅速發(fā)展,地圖動(dòng)畫(huà)成為了展示地理數(shù)據(jù)變化的有力工具,Python作為一種強(qiáng)大的編程語(yǔ)言,有著豐富的地理可視化庫(kù),本文將介紹如何使用Python的地理可視化庫(kù)來(lái)制作地圖動(dòng)畫(huà),并通過(guò)代碼實(shí)例來(lái)演示,需要的朋友可以參考下
    2024-05-05
  • 使用Django簡(jiǎn)單編寫(xiě)一個(gè)XSS平臺(tái)的方法步驟

    使用Django簡(jiǎn)單編寫(xiě)一個(gè)XSS平臺(tái)的方法步驟

    這篇文章主要介紹了使用Django簡(jiǎn)單編寫(xiě)一個(gè)XSS平臺(tái)的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-03-03
  • 在python中實(shí)現(xiàn)同行輸入/接收多個(gè)數(shù)據(jù)的示例

    在python中實(shí)現(xiàn)同行輸入/接收多個(gè)數(shù)據(jù)的示例

    今天小編就為大家分享一篇在python中實(shí)現(xiàn)同行輸入/接收多個(gè)數(shù)據(jù)的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Django 跨域請(qǐng)求處理的示例代碼

    Django 跨域請(qǐng)求處理的示例代碼

    本篇文章主要介紹了Django 跨域請(qǐng)求處理的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 使用python進(jìn)行圖片的文字識(shí)別詳細(xì)代碼

    使用python進(jìn)行圖片的文字識(shí)別詳細(xì)代碼

    Tesseract OCR是一款由Google團(tuán)隊(duì)開(kāi)發(fā)的開(kāi)源OCR引擎,用于將圖片、PDF 等格式中的文本轉(zhuǎn)換為可編輯的文本格式,本文主要介紹了Python進(jìn)行圖片的文字識(shí)別功能OCR的相關(guān)知識(shí),需要的朋友可以參考下
    2023-05-05
  • 如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    如何在windows下安裝Pycham2020軟件(方法步驟詳解)

    這篇文章主要介紹了在windows下安裝Pycham2020軟件方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python操作lxml庫(kù)實(shí)戰(zhàn)之Xpath篇

    Python操作lxml庫(kù)實(shí)戰(zhàn)之Xpath篇

    XPath是一門(mén)在XML文檔中查找信息的語(yǔ)言,下面這篇文章主要給大家介紹了關(guān)于Python操作lxml庫(kù)實(shí)戰(zhàn)之Xpath篇的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評(píng)論