一個(gè)空間換取時(shí)間的編程題取數(shù)組中出現(xiàn)次數(shù)最多的數(shù)

前言

因?yàn)榘l(fā)現(xiàn)拉勾上有很多心儀的公司崗位要求要會數(shù)據(jù)結(jié)構(gòu)與算法的,所以自己晚上在慢慢學(xué)習(xí) 數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ),主要是看用C++來實(shí)現(xiàn)視頻教學(xué)叶摄。在課上老師講時(shí)間復(fù)雜度和空間復(fù)雜度是可以相互轉(zhuǎn)化的。兩個(gè)概念的理解就是:

  • 空間換時(shí)間:對于執(zhí)行的慢法瑟,耗時(shí)的程序剩彬,可以通過消耗內(nèi)存(即構(gòu)造新的數(shù)據(jù)結(jié)構(gòu))來進(jìn)行優(yōu)化。
  • 時(shí)間換空間:對于消耗內(nèi)存的程序弹惦,也可以多消耗時(shí)間來降低內(nèi)存的消耗否淤。
    后面在講空間換時(shí)間時(shí)出了一個(gè)編程題來便于理解。題如下:
    在一個(gè)由自然數(shù)0-1000中任意數(shù) 組成的一維數(shù)組中棠隐,每個(gè)數(shù)可能會出現(xiàn)零次或者多次石抡,找出一維數(shù)組中出現(xiàn)次數(shù)最多的數(shù),并將其出現(xiàn)的次數(shù)打印出來助泽!
    自己對算法很陌生啰扛,當(dāng)時(shí)看到這個(gè)是想不出來用什么方法的。

思想與實(shí)現(xiàn)

思想:是以空間換取時(shí)間嗡贺,在這道編程題中就是重新構(gòu)造一個(gè)數(shù)組隐解,這個(gè)數(shù)組用來存放原數(shù)組中每個(gè)數(shù)字
出現(xiàn)的次數(shù),而這個(gè)數(shù)組中每個(gè)數(shù)的下標(biāo)是原數(shù)組中的每個(gè)數(shù)诫睬。(想通了這個(gè)的話就很簡單)
在Mac 上Visual studio code上實(shí)現(xiàn)如下:
自己還調(diào)試了一遍因?yàn)槌霈F(xiàn)次數(shù)最多的數(shù)可能有好幾個(gè)(這里有一個(gè)bug,后一方法解決了這個(gè))煞茫。


屏幕快照 2019-04-01 下午6.46.33.png

代碼:

#include<iostream>
using namespace std;

void searchMostNumber(int a[],int len){
    int save[1000] = {0};  //新建一個(gè)數(shù)組 初使值為0
    int max = 0;  //出現(xiàn)最多數(shù)的次數(shù)
    int key ;  //出現(xiàn)最多的數(shù)

    for(size_t i = 0; i < len; i++) 
    {
        /* code */
        int index = a[i]; //構(gòu)建新的數(shù)組 以a中值為下標(biāo),數(shù)的次數(shù)為值
        save[index]++;
    }
    for(size_t i = 0; i < 1000; I++)
    {
        /* code */
        if (max < save[i])  {
            /* code */
            max = save[i];  //取最大的次數(shù)
            key = i;  //取出現(xiàn)最多的數(shù)
        }
        
    }
    //這一條是解決有幾個(gè)最多次數(shù)的數(shù)
    for(size_t i = 0; i < 1000; I++)
    {
        /* code */
        if (max == save[i]) {
            /* code */
            printf("這個(gè)數(shù)組中出現(xiàn)最多的數(shù)是:%zu,出現(xiàn)了%d次\n",i,save[i]);
        }
        
    }
    
    
    
}



int main()
{
    int array[] = {1,3,3,2,202,202,202,202,4,7,9,34,3,3,202,202,202,202,3,7,7,7,202,202,202,202,3,3,3,202,202,202,202,101,202,199,3};
    int b[] = {1,3,3,3,4,4,4};  //測試有多個(gè)最大數(shù)的情況
    int lengTemp = sizeof(array)/sizeof(*array);
    printf("數(shù)組array中---------");
    searchMostNumber(array,sizeof(array)/sizeof(*array));
     printf("數(shù)組b中---------");
    searchMostNumber(b,sizeof(b)/sizeof(*b));
    printf(" hello world 好好學(xué)習(xí),天天向上\n");
 
    return 0;
}

輸出結(jié)果:


結(jié)果.png

總結(jié):
讓自己學(xué)會了在mac 上VS code的編譯
后期會繼續(xù)學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法(加油~)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溜嗜,一起剝皮案震驚了整個(gè)濱河市宵膨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌炸宵,老刑警劉巖辟躏,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異土全,居然都是意外死亡捎琐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門裹匙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑞凑,“玉大人,你說我怎么就攤上這事概页∽延” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵惰匙,是天一觀的道長技掏。 經(jīng)常有香客問我,道長项鬼,這世上最難降的妖魔是什么哑梳? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮绘盟,結(jié)果婚禮上鸠真,老公的妹妹穿的比我還像新娘。我一直安慰自己龄毡,他們只是感情好吠卷,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稚虎,像睡著了一般撤嫩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蠢终,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天序攘,我揣著相機(jī)與錄音,去河邊找鬼寻拂。 笑死程奠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的祭钉。 我是一名探鬼主播瞄沙,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了距境?” 一聲冷哼從身側(cè)響起申尼,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垫桂,沒想到半個(gè)月后师幕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诬滩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年霹粥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疼鸟。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡后控,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出空镜,到底是詐尸還是另有隱情浩淘,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布姑裂,位于F島的核電站馋袜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏舶斧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一察皇、第九天 我趴在偏房一處隱蔽的房頂上張望茴厉。 院中可真熱鬧,春花似錦什荣、人聲如沸矾缓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗜闻。三九已至,卻和暖如春桅锄,著一層夾襖步出監(jiān)牢的瞬間琉雳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工友瘤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翠肘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓辫秧,卻偏偏與公主長得像束倍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,109評論 1 32
  • 一.簡述如何安裝配置apache 的一個(gè)開源的hadoop 1.使用root賬戶登陸 2.修改ip 3.修改hos...
    梔子花_ef39閱讀 4,953評論 0 52
  • 在一個(gè)方法內(nèi)部定義的變量都存儲在棧中,當(dāng)這個(gè)函數(shù)運(yùn)行結(jié)束后邮旷,其對應(yīng)的棧就會被回收黄选,此時(shí),在其方法體中定義的變量將不...
    Y了個(gè)J閱讀 4,420評論 1 14
  • 1. 基礎(chǔ)知識 1.1廊移、 基本概念糕簿、 功能 馮諾伊曼體系結(jié)構(gòu)1、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2狡孔、順序執(zhí)...
    yunpiao閱讀 5,329評論 1 22
  • 英國作家毛姆寫過關(guān)于孤獨(dú)的一段話:“我們每一個(gè)人生在世界上都是孤獨(dú)的懂诗。每個(gè)人都囚禁在一座鐵塔里,只能靠一些符號同別...
    Sarah瀟瀟閱讀 217評論 0 0