題目要求:
問題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 從 ...