面試 c 演算法

2021-07-27 18:49:50 字數 1064 閱讀 2798

這周面了乙個小公司,漢雲科技****。說招的是演算法工程師,其實他們的題目都不難,但是要手寫演算法,就像是考試一樣,但是我答得好渣。其實他們公司給我的印象不是太好,無論是公司文化還是環境。其實這都不是重點,查缺補漏才是重點!

首先是一道語言基礎題,考得是動態記憶體的分配,還有指標的問題,我是一臉懵逼,所以回來之後決心要攻克動態分配這個問題。

void getmemory(char *p)

void test(void)

問題是執行著test函式會有什麼結果:

這裡使用了指標形參,str就是實參,而getmomery函式裡面的形參p指標是乙個區域性變數,p=(cahr *)malloc(100)只是為區域性拷貝p申請了100bytes的記憶體空間,實參的值還沒有改變。str還是乙個空指標,執行這個函式會報錯。

char *getmemory(void)

void test(void)

分析:

getmemory函式返回的是乙個指標,這個指標就是hello這個字串首字母的位址,printf(str)就是列印這個位址,根據格式化輸出的原則,如果程式最後一行改為:printf(」%d\n「,str),則可以列印這個位址的值

void getmemory(char **p,int num)

void test(void)

分析:

這段**是正確的,可以列印出hello字串。這裡使用了傳引用引數,形參p是乙個指向指標的指標,對p解指標後便可以申請記憶體空間

void test(void)

}

先看看一道單鏈表反轉的題目,下面先貼出**leetcode上面的**:

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return prev;

}};

C 經典演算法 面試絕殺

1.鍊錶逆序 2.鍊錶合併 3.一棵樹是否某條路徑結點之和等於給定值。並描述演算法複雜度 4.你熟悉的排序演算法並描述演算法複雜度。快速排序 歸併排序 堆排序 選擇排序 插入排序 氣泡排序 折半插入排序 以下 都能成功通過。1.鍊錶逆序 include using namespace std str...

C 演算法面試題

演算法 1 什麼是npc,np hard?2 起泡排序的時間複雜度是多少?說出至少乙個比它更快的演算法 排序的極限時間複雜度是多少?3 有乙個鍊錶,如何判斷它是乙個迴圈鍊錶?如果鍊錶是單向的呢?如果出現迴圈的點可能在任意位置呢?如果快取空間是有限的,比如是乙個常數呢?如果只能使用2個快取呢?4 有乙...

C 面試演算法題C 實現

題目一 陣列中查詢 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。class solution else else return false return false class ...