青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Fly me to the moon

the beauty of C++

筆面試題目記錄(一)

找工作的第一場(chǎng)仗打得非常漂亮,能在國(guó)慶前就拿到一個(gè)不錯(cuò)的offer回家算是一個(gè)完美的開(kāi)局了,不過(guò)接下去的10月,11月才是重頭戲,希望也能完美收官吧。剛剛回到家里,打算把前兩天筆試面試中碰到的一些題目記錄在這里,并給出自己的實(shí)現(xiàn)。以后每過(guò)一階段都會(huì)在這里總結(jié)一次碰到的題目,加以整理和進(jìn)一步的思考,為后面的硬仗做好充分的準(zhǔn)備。fighting~

快慢指針判斷單鏈表是否有環(huán)
這題是出現(xiàn)在筆試題里的一道選擇題,考試的時(shí)候我愣是不知道快慢指針是啥,于是猜了一個(gè)錯(cuò)了,回到寢室后google了一下,發(fā)現(xiàn)這是判斷單鏈表是否有環(huán)的最經(jīng)典的方案,對(duì)自己連這么基本的知識(shí)都不知道相當(dāng)無(wú)語(yǔ)啊,于是趕緊實(shí)現(xiàn)了一下,相信這輩子也不會(huì)忘了吧
 1#include <iostream>
 2#include <string>
 3using namespace std;
 4
 5typedef struct list_node
 6{
 7    int x;
 8    struct list_node* next;
 9}
node, *pnode;
10
11bool isCircle(pnode list)
12{
13    pnode quick=list, slow=list;//快慢指針
14    while(1)
15    {
16        if(quick==NULL || slow == NULL)//可以到達(dá)鏈表末尾說(shuō)明無(wú)環(huán)
17            return false;
18        quick = quick->next;
19        if(quick == NULL)
20            return false;
21        quick = quick->next;
22        slow = slow->next;
23
24        if(slow==quick)//慢指針趕上快指針說(shuō)明有環(huán)
25            return true;
26    }

27}

28
29int main()
30{
31    pnode list = NULL, temp;
32
33    for(int i=1;i<=10;i++)
34    {
35        pnode pn = new node;
36        pn->= i;
37        pn->next = list;
38        list = pn;
39    }

40    
41    temp = list;
42    for(int i=0;i<10;i++, temp=temp->next)
43        cout<<temp->x<<" ";
44    cout<<endl;
45
46    if(isCircle(list))
47        cout<<"有環(huán)"<<endl;
48    else
49        cout<<"無(wú)環(huán)"<<endl;
50
51    //手工構(gòu)造一個(gè)環(huán)
52    pnode tail = list;
53    while(tail->next != NULL)
54        tail = tail->next;
55    tail->next = list;
56
57    if(isCircle(list))
58        cout<<"有環(huán)"<<endl;
59    else
60        cout<<"無(wú)環(huán)"<<endl;
61
62    for(int i=0;i<10;i++)
63    {
64        temp = list->next;
65        delete list;
66        list = temp;
67    }

68
69    return 0;
70}

原地刪除給定字符串中的指定字符
一聽(tīng)到面試官說(shuō)要原地算法,第一反應(yīng)就是交換,于是秒殺
 1#include <iostream>
 2#include <string>
 3using namespace std;
 4
 5//原地刪除字符串中的指定字符
 6char* del_char(char *str, char del)
 7{
 8    int n = strlen(str);
 9    int i,j;
10    for(i=0;i<n;i++)
11    {
12        if(str[i]==del)
13        {
14            j=i;
15            while(str[j]==del)
16                j++;
17            swap(str[i], str[j]);
18            if(str[i]=='\0')
19                return str;
20        }

21    }

22    return str;
23}

24
25int main()
26{
27    char str[] = "banana";
28    cout<<del_char(str, 'a')<<endl;
29
30    return 0;
31}

求給定數(shù)組的連續(xù)最大和子數(shù)組
經(jīng)典的動(dòng)態(tài)規(guī)劃,programming pearl上給了四種解法,對(duì)divide&conquer和DP的兩種解法應(yīng)該都是了然于心的,于是又秒殺。之后面試官要求記錄最大子數(shù)組的索引,想了想,繼續(xù)秒殺

 1#include <iostream>
 2#include <string>
 3using namespace std;
 4
 5int x=-1, y=-1;//x,y用來(lái)記錄最大子數(shù)組的起始和結(jié)束位置
 6
 7//動(dòng)態(tài)規(guī)劃,求最大子數(shù)組和
 8int maxsubarray(int a[], int n)
 9{
10    int max = 0, temp;//temp用來(lái)記錄每次新的可能的最長(zhǎng)子數(shù)組的開(kāi)始位置
11    int maxendinghere = 0;
12    for(int i=0;i<n;i++)
13    {
14        if(maxendinghere+a[i]>=0)//特別注意這里是大于等于,不能忘記等于
15        {
16            if(maxendinghere==0)
17                temp = i;
18            maxendinghere += a[i];
19        }

20        else
21            maxendinghere = 0;
22
23        if(maxendinghere > max)
24        {
25            max = maxendinghere;
26            y = i;
27            x = temp;
28        }

29    }

30
31    return max;
32}

33
34int main()
35{
36    int array[] = {2,-3,4};
37    int len = sizeof(array)/sizeof(array[0]);
38    for(int i=0;i<len;i++)
39        cout<<array[i]<<" ";
40    cout<<endl;
41
42    cout<<"最大連續(xù)子數(shù)組和為: "<<maxsubarray(array, len)<<endl;
43    cout<<"范圍: "<<"["<<x<<","<<y<<"]"<<endl;
44
45    return 0;
46}

最大子矩陣問(wèn)題,給出O(N^3)的算法
事實(shí)上就是上一題的二維版本,話說(shuō)也是經(jīng)典題,結(jié)果愣是做了我半天沒(méi)搞定,主要是下標(biāo)老是被我寫(xiě)錯(cuò)。。。很郁悶,回寢室后也改了半天才總算寫(xiě)對(duì),還是缺少寫(xiě)DP的練習(xí)啊
 1#include <iostream>
 2#include <string>
 3using namespace std;
 4
 5//動(dòng)態(tài)規(guī)劃,預(yù)計(jì)算子矩陣(左上角為(0,0)的子矩陣),O(n*m)
 6//狀態(tài)轉(zhuǎn)移方程:SM[i,j]=SM[i-1,j]+SM[i,j-1]-SM[i-1,j-1]+M[i-1,j-1],注意SM和M下標(biāo)的不同
 7//初始狀態(tài):SM[0,j]=0, SM[i,0]=0
 8int* cal_submatrix(int M[], int n, int m)
 9{
10    n++;m++;
11    int *SM = new int[n*m];
12    int i,j;
13    for(i=0;i<n;i++)
14        SM[i*m] = 0;
15    for(j=0;j<m;j++)
16        SM[j] = 0;
17    
18    for(i=1;i<n;i++)
19        for(j=1;j<m;j++)
20            SM[i*m+j] = SM[(i-1)*m+j]+SM[i*m+j-1]-SM[(i-1)*m+j-1]+M[(i-1)*(m-1)+j-1];
21    
22    return SM;
23}

24
25//求n*m矩陣的最大和子矩陣,即求連續(xù)最大和子數(shù)組的二維版本
26//利用已經(jīng)預(yù)計(jì)算的子矩陣在常量時(shí)間內(nèi)把二維問(wèn)題轉(zhuǎn)化為一維問(wèn)題
27//C[k]=SM[down,k]-SM[up-1,k]-SM[down,k-1]+SM[up-1,k-1]
28int maxsubmatrix(int M[], int SM[], int n, int m)
29{
30    int up,down,maxendinghere,k,Ck;
31    int max = 0;
32    //遍歷上下界
33    for(up=0;up<n;up++)
34    {
35        for(down=up;down<n;down++)
36        {
37            //把問(wèn)題看成一維的情況來(lái)解
38            maxendinghere = 0;
39            for(k=0;k<m;k++)
40            {
41                Ck = SM[(down+1)*(m+1)+k+1]-SM[up*(m+1)+k+1]-SM[(down+1)*(m+1)+k]+SM[up*(m+1)+k];//常量時(shí)間求第k列在[down,up]內(nèi)的和
42                if(maxendinghere+Ck >= 0)
43                    maxendinghere+=Ck;
44                else
45                    maxendinghere = 0;
46
47                if(maxendinghere > max)
48                    max = maxendinghere;
49            }

50        }

51    }

52
53    return max;
54}

55
56int main()
57{
58    int array[] = {2,-3,4,1,2,-3,6,2,5,2,-1,-6};
59    int n=3, m=4;
60    cout<<"原始矩陣:"<<endl;
61    for(int i=0;i<n;i++)
62    {
63        for(int j=0;j<m;j++)
64            cout<<array[i*m+j]<<" ";
65        cout<<endl;
66    }

67
68    int *SM = cal_submatrix(array, n, m);
69
70    cout<<"預(yù)計(jì)算矩陣:"<<endl;
71    for(int i=0;i<=n;i++)
72    {
73        for(int j=0;j<=m;j++)
74            cout<<SM[i*(m+1)+j]<<" ";
75        cout<<endl;
76    }

77
78    cout<<"子矩陣最大和: "<<maxsubmatrix(array,SM, n, m)<<endl;
79    delete [] SM;
80
81    return 0;
82}

總結(jié)
總的來(lái)說(shuō),題目雖然都不難,但是在面試的時(shí)候要求當(dāng)場(chǎng)在紙上寫(xiě)出代碼還是相當(dāng)考驗(yàn)人的,畢竟這時(shí)候你得不到IDE的幫助,只能在自己腦子里debug,光能描述出算法的思想還是不夠的,還是得多練練碼代碼的能力啊,平時(shí)練的時(shí)候最好是別用F5,有錯(cuò)直接用眼睛看,用腦子想,當(dāng)然啦,真正寫(xiě)程序的時(shí)候還得依賴debug,但在實(shí)現(xiàn)一些不太復(fù)雜的算法時(shí)完全可以這么做,我相信一定有好處的。

ps:面試結(jié)束后同學(xué)告訴我很多題《編程之美》上都有,可憐我一年前就買了這本書(shū)到現(xiàn)在都沒(méi)看過(guò),看來(lái)國(guó)慶得花時(shí)間翻翻了啊

posted on 2009-09-30 16:27 翼帆 閱讀(972) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 算法筆試/面試

導(dǎo)航

<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類

隨筆檔案

搜索

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲午夜激情免费视频| 亚洲专区免费| 午夜久久福利| 欧美亚洲免费电影| 久久精品视频播放| 久久人人看视频| 麻豆精品视频在线观看视频| 久久综合中文| 亚洲精品在线观| 在线亚洲观看| 久久精品免费电影| 欧美国产视频在线观看| 欧美日韩一区二区三区四区在线观看| 欧美精品免费在线| 欧美成人午夜| 西西裸体人体做爰大胆久久久| 中文一区二区在线观看| 欧美一区二视频在线免费观看| 久久精品国产一区二区三区免费看| 久久久人成影片一区二区三区| 欧美理论大片| 国产一区二区三区av电影| 亚洲福利视频三区| 亚洲欧美在线一区| 欧美sm极限捆绑bd| 亚洲性感激情| 欧美+日本+国产+在线a∨观看| 国产精品豆花视频| 亚洲国产精品久久久久秋霞蜜臀 | 久久精品国产欧美亚洲人人爽| 另类亚洲自拍| 亚洲午夜在线| 欧美激情精品久久久久久黑人| 国产日韩精品电影| 亚洲精品资源美女情侣酒店| 久久黄色影院| 夜夜狂射影院欧美极品| 麻豆av一区二区三区久久| 国产精品超碰97尤物18| 亚洲国内精品| 欧美.www| 久久久精品免费视频| 国产精品高潮呻吟久久av黑人| 最新日韩精品| 亚洲第一视频| 亚洲免费视频一区二区| 欧美日韩一卡| 日韩一级不卡| 亚洲国产一区视频| 狼人天天伊人久久| 激情视频一区二区三区| 久久精品国产免费看久久精品| 一本色道久久综合狠狠躁的推荐| 欧美va天堂在线| 亚洲人在线视频| 欧美成人亚洲成人| 久久av二区| 狠狠爱www人成狠狠爱综合网| 久久av一区二区三区| 宅男在线国产精品| 国产精品女人毛片| 久久国产精品一区二区三区四区| 亚洲图片欧洲图片av| 国产精品久久9| 午夜精品美女久久久久av福利| 一区二区三区.www| 国产精品久久久久久久久久直播| 一道本一区二区| 亚洲素人在线| 国产精品一区二区黑丝| 午夜日韩av| 欧美一区二区视频在线观看| 国产精品无人区| 久久―日本道色综合久久| 先锋影音国产一区| 在线电影国产精品| 亚洲国产日韩综合一区| 欧美日韩午夜| 午夜精品成人在线视频| 欧美一级淫片播放口| 亚洲高清免费| 在线亚洲欧美专区二区| 国产私拍一区| 亚洲黄色成人网| 国产精品麻豆欧美日韩ww| 久久久一本精品99久久精品66| 久久久一区二区三区| 一区二区黄色| 久久精品女人的天堂av| 在线一区二区视频| 久久激情久久| 亚洲一区三区电影在线观看| 欧美中文在线观看| 一区二区三区精品视频| 亚洲欧美日韩精品综合在线观看 | 欧美无乱码久久久免费午夜一区| 午夜一区二区三区在线观看| 久久久久久69| 亚洲一区黄色| 免费成人高清| 久久九九免费视频| 欧美日韩成人综合天天影院| 亚洲欧美日韩国产中文在线| 久久先锋影音av| 欧美一区二区在线免费观看| 欧美成人精品在线观看| 久久久国产视频91| 国产精品www色诱视频| 欧美黄网免费在线观看| 国产一区二区无遮挡| 99re66热这里只有精品3直播| 亚洲第一在线综合网站| 亚洲一区欧美二区| av不卡在线| 蜜臀a∨国产成人精品| 久久国产精品72免费观看| 欧美精品一区二区蜜臀亚洲| 老鸭窝毛片一区二区三区| 国产精品毛片在线| 99一区二区| 亚洲人成亚洲人成在线观看| 久久精品中文| 久久久另类综合| 国产日韩欧美视频在线| 亚洲私人影院在线观看| 亚洲一区欧美| 欧美视频专区一二在线观看| 亚洲精品国产精品国自产在线 | 亚洲国产天堂久久综合| 国产欧美一区二区三区在线老狼| 91久久精品网| 亚洲人人精品| 欧美大片在线看| 亚洲风情亚aⅴ在线发布| 狠狠色伊人亚洲综合成人| 欧美在线看片| 久久久久亚洲综合| 好看不卡的中文字幕| 久久精品免视看| 免费成人高清视频| 亚洲国产色一区| 女人天堂亚洲aⅴ在线观看| 久久这里有精品视频| 伊人成人网在线看| 老司机一区二区三区| 亚洲国产欧美日韩| 亚洲视频免费| 欧美午夜一区二区| 在线视频欧美日韩| 欧美亚洲一区二区在线| 国产自产在线视频一区| 久久精品一本| 亚洲国产高清在线| 亚洲一区二区三区欧美| 国产女人水真多18毛片18精品视频| 香蕉乱码成人久久天堂爱免费| 久久婷婷丁香| 日韩午夜电影av| 国产精品久久久久久久久搜平片| 亚洲欧美日韩精品久久亚洲区 | 欧美亚洲视频一区二区| 国产一区91| 久久综合成人精品亚洲另类欧美| 亚洲福利视频二区| 亚洲欧美中文另类| 在线看欧美日韩| 欧美三级电影精品| 欧美亚洲日本网站| 亚洲欧洲午夜| 久久精品夜色噜噜亚洲a∨| 在线观看成人一级片| 欧美日韩中文| 久久精品国产久精国产爱| 亚洲黄网站黄| 久久精品123| 在线视频你懂得一区| 狠狠色狠色综合曰曰| 欧美日韩精品免费在线观看视频| 亚洲欧美日韩成人高清在线一区| 欧美国产高潮xxxx1819| 亚洲欧美综合另类中字| 黄色亚洲网站| 国产精品久久久久久久久久免费看 | 黄色成人91| 国产精品jvid在线观看蜜臀| 久久久久久久综合狠狠综合| 夜色激情一区二区| 亚洲高清资源综合久久精品| 免费中文日韩| 亚洲视频一二三| 久久久五月婷婷| 亚洲理论在线| 国产精品久久久久永久免费观看| 欧美制服丝袜| 亚洲一区二区三区在线播放| 亚洲精品国久久99热| 免费一级欧美片在线观看| 久久成人免费| 性欧美video另类hd性玩具| 亚洲视频一二|