暴風影音2014筆試演算法題彙總

2021-09-01 19:56:36 字數 1582 閱讀 4113

1.自定義實現字串轉為整數的演算法,例如把「123456」轉成整數123456.(輸入中可能存在符號,和數字)

//返回結果的有效標誌  

enum status ;

int gstatus = valid;

int strtoint(const char* str)

while(*digit != '\0')

digit++;

} //非法輸入

else

} if(*digit == '\0')

} return static_cast(result);

}

2.給出一棵二叉樹的前序和中序遍歷,輸出後續遍歷的結果,假設二叉樹中儲存的均是ascii碼。如前序:abdhecfg,中序:hdbeafcg,則輸出後序為:hdecfgca。

思路:先利用前序和中序構建出二叉樹,然後後序遍歷輸出結果

/** 

*返回二叉樹的根節點

*preorder:前序遍歷序列

*inorder:中序遍歷序列

*len:節點數目

*/

node* getbinarytree(char* preorder, char* inorder, int len)

//通過遞迴找到左子樹和右子樹,注意子樹的前序中序的下標的計算

if(pos == 0)

root->lchild = null;

else

root->lchild = getbinarytree(preorder+1, inorder, pos);

if(len-pos-1 == 0)

root->rchild = null;

else

root->rchild = getbinarytree(preorder+pos+1, inorder+pos+1,len-pos-1);

return root;

}

/**

*後續遍歷二叉樹

* */

void postorder(node* root)

/**

*根據前序遍歷和中序遍歷輸出後續遍歷

* */

void printpostorderviapreorderandinorder(char* preorder, char* inorder)

3.給出了乙個n*n的矩形,程式設計求從左上角到右下角的路徑數(n > =2),限制只能向右或向下移動,不能回退。例如當n=2時,有6條路徑。

一是利用數學知識,從左上角到右下角總共要走2n步,其中橫向要走n步,所以總共就是c2n~n。

二是利用遞迴實現

/** 

*返回總路徑數

*引數m:表示矩形的橫向格仔數

*引數n:表示矩形的縱向格仔數

*/

int gettotalpath(int m, int n)

人人網2014筆試演算法題彙總

1.給出乙個有序陣列啊,長度為len,另外給出第三個數x,問是否能在陣列中找到兩個數,這兩個數之和等於第三個數x。我們首先看到第一句話,這個陣列是有序的,所以,我們可以定義兩個指標,乙個指向陣列的第乙個元素,另乙個指向應該指向的位置 這個需要看具體的實現和陣列給定的值 首先計算兩個位置的和是否等於給...

美團網2014筆試演算法題彙總

1.鍊錶翻轉。給出乙個鍊錶和乙個數k,比如鍊錶1 2 3 4 5 6,k 2,則翻轉後2 1 4 3 6 5,若k 3,翻轉後3 2 1 6 5 4,若k 4,翻轉後4 3 2 1 5 6,用程式實現。include using namespace std struct listnode listn...

阿里巴巴2014筆試演算法題彙總

1.兩棵二叉樹t1和t2,t1的節點數是百萬量級,t2的節點數一千以內,請給出判斷t2是否t1子樹的可行演算法。分析 首先想到的是遞迴,但是t1的數量級太大,遞迴會導致棧溢位,於是以非遞迴實現。bool issubtree binarytreenode proot1,binarytreenode p...