1

1題目:在一個二維數(shù)組中,每一行都按照從左到右遞增的順序排序垮斯,每一列都按照從上到下遞增的順序排序郎仆。請完成一個函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù)兜蠕,判斷數(shù)組中是否含有該整數(shù)扰肌。

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        
        int row = array.size();
        int colume = array[0].size();
         
        int x = row - 1;
        int y = 0;
         
        while (x >= 0 && y <= colume-1) {
             
            if (target < array[x][y]) {
                --x;
            }else if (target > array[x][y]) {
                ++y;
            }else {
                return true;
            }
             
        }
         
        return false;
    }
};

2題目:請實現(xiàn)一個函數(shù),將一個字符串中的空格替換成“%20”熊杨。例如曙旭,當(dāng)字符串為We Are Happy.則經(jīng)過替換之后的字符串為We%20Are%20Happy盗舰。

//思路 
//1:從前往后插入,這樣移動·的次數(shù)多不建議 
//2:從后往前插入 

  

class Solution {
    public:
    void replaceSpace(char *str,int length) {
        //遍歷一邊字符串找出空格的數(shù)量
        if(str==NULL||length<0)
            return ;
        int i=0; 
        int oldnumber=0;//記錄以前的長度 
        int replacenumber=0;//記錄空格的數(shù)量
        while(str[i]!='\0')
        {
            oldnumber++;
            if(str[i]==' ')
            {
                replacenumber++;
            }
            i++;
        }
        int newlength=oldnumber+replacenumber*2;//插入后的長度 
        if(newlength>length)//如果計算后的長度大于總長度就無法插入
            return ;
        int pOldlength=oldnumber; //注意不要減一因為隱藏個‘\0’也要算里 
        int pNewlength=newlength;
        
        while(pOldlength>=0&&pNewlength>pOldlength)//放字符
        {
            if(str[pOldlength]==' ') //碰到空格就替換
            {
                str[pNewlength--]='0';
                str[pNewlength--]='2';
                str[pNewlength--]='%';
            }
            else //不是空格就把pOldlength指向的字符裝入pNewlength指向的位置
            {
                str[pNewlength--]=str[pOldlength];
            }
            pOldlength--; //不管是if還是elsr都要把pOldlength前移
        }
    }
};

3題目:輸入一個鏈表桂躏,從尾到頭打印鏈表每個節(jié)點的值钻趋。

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
   vector<int> printListFromTailToHead(ListNode* head) {
       vector<int> result;
       stack<struct ListNode*> stack;
       while(head != NULL){
           stack.push(head);
           head = head->next;
       }
       while(!stack.empty()){
           result.push_back(stack.top()->val);
           stack.pop();
       }
       return result;
   }
};

4.輸入某二叉樹的前序遍歷和中序遍歷的結(jié)果,請重建出該二叉樹剂习。假設(shè)輸入的前序遍歷和中序遍歷的結(jié)果中都不含重復(fù)的數(shù)字蛮位。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回鳞绕。

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:

   TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> in) {
 
            int inlen=in.size();
 
            if(inlen==0)
 
                return NULL;
 
            vector<int> left_pre,right_pre,left_in,right_in;
 
            //創(chuàng)建根節(jié)點失仁,根節(jié)點肯定是前序遍歷的第一個數(shù)
 
            TreeNode* head=new TreeNode(pre[0]);
 
            //找到中序遍歷根節(jié)點所在位置,存放于變量gen中
 
            int gen=0;
 
            for(int i=0;i<inlen;i++)
 
            {
 
                if (in[i]==pre[0])
 
                {
 
                    gen=i;
 
                    break;
 
                }
 
            }
 
            //對于中序遍歷,根節(jié)點左邊的節(jié)點位于二叉樹的左邊们何,根節(jié)點右邊的節(jié)點位于二叉樹的右邊
 
            //利用上述這點萄焦,對二叉樹節(jié)點進(jìn)行歸并
 
            for(int i=0;i<gen;i++)
 
            {
 
                left_in.push_back(in[i]);
 
                left_pre.push_back(pre[i+1]);//前序第一個為根節(jié)點
 
            }
 
            for(int i=gen+1;i<inlen;i++)
 
            {
 
                right_in.push_back(in[i]);
 
                right_pre.push_back(pre[i]);
 
            }
 
            //和shell排序的思想類似,取出前序和中序遍歷根節(jié)點左邊和右邊的子樹
 
            //遞歸冤竹,再對其進(jìn)行上述所有步驟楷扬,即再區(qū)分子樹的左、右子子數(shù)贴见,直到葉節(jié)點
 
           head->left=reConstructBinaryTree(left_pre,left_in);
 
           head->right=reConstructBinaryTree(right_pre,right_in);
 
           return head;
 
        }
};

5.用兩個棧來實現(xiàn)一個隊列烘苹,完成隊列的Push和Pop操作。 隊列中的元素為int類型片部。

/*用兩個棧實現(xiàn)一個隊列的功能?要求給出算法和思路!
**<分析>:
**入隊:將元素進(jìn)棧A
**出隊:判斷棧B是否為空镣衡,如果為空,則將棧A中所有元素pop档悠,并push進(jìn)棧B廊鸥,棧B出棧;
**如果不為空辖所,棧B直接出棧惰说。
*/
class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }

    int pop() {
        int a;
        // 如果棧2空
        if (stack2.empty()) {
            // 依次把棧1中的所有元素放入到棧2中去
            while(!stack1.empty()) {
                a = stack1.top();
                stack2.push(a);
                stack1.pop();
            }
        }
        // 缺少一個棧空檢測
        a = stack2.top();
        stack2.pop();
        return a;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缘回,一起剝皮案震驚了整個濱河市吆视,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酥宴,老刑警劉巖啦吧,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拙寡,居然都是意外死亡授滓,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來般堆,“玉大人在孝,你說我怎么就攤上這事』此ぃ” “怎么了浑玛?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長噩咪。 經(jīng)常有香客問我顾彰,道長,這世上最難降的妖魔是什么胃碾? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任涨享,我火速辦了婚禮,結(jié)果婚禮上仆百,老公的妹妹穿的比我還像新娘厕隧。我一直安慰自己,他們只是感情好俄周,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布吁讨。 她就那樣靜靜地躺著,像睡著了一般峦朗。 火紅的嫁衣襯著肌膚如雪建丧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天波势,我揣著相機(jī)與錄音翎朱,去河邊找鬼。 笑死尺铣,一個胖子當(dāng)著我的面吹牛拴曲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凛忿,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼澈灼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了店溢?” 一聲冷哼從身側(cè)響起叁熔,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎逞怨,沒想到半個月后者疤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體福澡,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡叠赦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片除秀。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡糯累,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出册踩,到底是詐尸還是另有隱情泳姐,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布暂吉,位于F島的核電站胖秒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏慕的。R本人自食惡果不足惜阎肝,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肮街。 院中可真熱鬧风题,春花似錦、人聲如沸嫉父。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绕辖。三九已至摇肌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仪际,已是汗流浹背朦蕴。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留弟头,地道東北人吩抓。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像赴恨,于是被迫代替她去往敵國和親疹娶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

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

  • 劍指offer 最近在怕琢客網(wǎng)上刷劍指offer的題目雨饺,現(xiàn)將題目和答案(均測試通過)總結(jié)如下: 二維數(shù)組的查找 替換...
    閆阿佳閱讀 888評論 0 10
  • 最近在準(zhǔn)備一些暑期實習(xí)的筆試和面試,在呕蟠荆客網(wǎng)上面做了一些題额港,現(xiàn)在整理出來供大家參考,希望和大家共同學(xué)習(xí)歧焦!題目不難移斩,...
    Torang閱讀 2,385評論 3 11
  • __block和__weak修飾符的區(qū)別其實是挺明顯的:1.__block不管是ARC還是MRC模式下都可以使用,...
    LZM輪回閱讀 3,284評論 0 6
  • 1.二維數(shù)組中的查找 在一個二維數(shù)組中,每一行都按照從左到右遞增的順序排序向瓷,每一列都按照從上到下遞增的順序排序肠套。請...
    爬行者小Y閱讀 137評論 0 0
  • 他站在冰冷而堅硬的甲板上 這軍艦即將奔赴戰(zhàn)場的遠(yuǎn)方 藍(lán)色的大海上泛著晴空微光 那歡快叫著的 是海鷗自由飛翔 屋頂?shù)?..
    夜谷閱讀 201評論 0 3