八十一題題目合集 微軟面試100題 第八十一題

2021-06-27 05:36:41 字數 1239 閱讀 3060

題目要求:

問題1:在乙個int陣列裡查詢這樣的數,它大於等於左側所有數,小於等於右側所有數。

問題2:乙個檔案,內含一千萬行字串,每個字串在1k以內,要求找出所有相反的串對,如abc和cba。

問題3:stl的set用什麼實現的?為什麼不用hash?

題目分析:

問題1分析:

假設int陣列為data。

用兩個陣列a、b作為輔助陣列,a[i]、b[i]分別儲存從左到i最大的數和從右到i的最小數,需要遍歷兩次data。

然後再遍歷一遍原陣列data,將所有的data[i]>=a[i-1]&&data[i]<=b[i]的data[i]找出即可。

-----改進-------

不要b陣列,初始化a陣列之後,直接倒序遍歷data;

find(data,5);

data[4] = 12;

find(data,5);

return 0;

}void find(int *data,int n)

int min = data[n-1];

b[n-1] = data[n-1];

for(int i = n-2;i>=0;i--)

cout << endl << "-----------------" << endl;

}問題1改進**

#include using namespace std;

void find(int *data,int n);

int main(void)

; find(data,5);

data[4] = 12;

find(data,5);

return 0;

}void find(int *data,int n)

int min = data[n-1];

cout << "滿足的元素有:";

for(int i = n-1;i>=1;i--)

cout << endl << "-----------------" << endl;

}

微軟等資料結構與演算法面試100題 第十一題

第十一題 題目 求二叉樹中節點的最大距離.如果我們把二叉樹看成乙個圖,父子節點之間的連線看成是雙向的,我們姑且定義 距離 為兩節點之間邊的個數。寫乙個程式,求一棵二叉樹中相距最遠的兩個節點之間的距離。分析 對本題而言,有上面兩種情況,乙個是最大長度的節點裡面沒有根節點,乙個是有根節點。如何求解樹中節...

第七十九題合集 微軟面試100題 第七十九題

題目要求 問題 編寫實現鍊錶排序的一種演算法。問題 編寫實現陣列排序的一種演算法。問題 編寫能直接實現strstr 功能的 問題分析 問題1分析 方法1 首先想到的是氣泡排序,因為簡單 方法2 如果記憶體空間允許,可以通過乙個陣列來輔助排序,時間複雜度o nlogn 但是需要耗費空間複雜度.具體如下...

關於微軟面試100題系列中兩道題目的個人解法

最近為了準備找工作,刷了july大神整理的微軟100題系列,中間有兩道題目在原博主文中並沒有給出很好地解決方案,在此文中給出個人的解法,希望拋磚引玉,請求大神給予指導。第一道是30題,原題描述如下 題目 輸入乙個整數 n,求從 1到 n這 n個整數的十進位制表示中 1出現的次數。例如輸入 12 從 ...