1、有一個整數(shù)數(shù)組,請求出兩兩之差絕對值最小的值,記住,只要得出最小值即可,不需要求出是哪兩個數(shù)。
2、寫一個函數(shù),檢查字符是否是整數(shù),如果是,返回其整數(shù)值。
(或者:怎樣只用4行代碼編寫出一個從字符串到長整形的函數(shù)?)
3、給出一個函數(shù)來輸出一個字符串的所有排列。
4、請編寫實(shí)現(xiàn)malloc()內(nèi)存分配函數(shù)功能一樣的代碼。
給出一個函數(shù)來復(fù)制兩個字符串A和B。字符串A的后幾個字節(jié)和字符串B的前幾個字節(jié)重疊。
5、怎樣編寫一個程序,把一個有序整數(shù)數(shù)組放到二叉樹中?
6、怎樣從頂部開始逐層打印二叉樹結(jié)點(diǎn)數(shù)據(jù)?請編程。
7、怎樣把一個鏈表掉個順序(也就是反序,注意鏈表的邊界條件并考慮空鏈表)?
8、請編寫能直接實(shí)現(xiàn)int atoi(const char * pstr)函數(shù)功能的代碼。
9、編程實(shí)現(xiàn)兩個正整數(shù)的除法
編程實(shí)現(xiàn)兩個正整數(shù)的除法,當(dāng)然不能用除法操作符。
// return x/y.
int div(const int x, const int y)
{
....
}
10、在排序數(shù)組中,找出給定數(shù)字的出現(xiàn)次數(shù)
比如 [1, 2, 2, 2, 3] 中2的出現(xiàn)次數(shù)是3次。
11、平面上N個點(diǎn),每兩個點(diǎn)都確定一條直線,
求出斜率最大的那條直線所通過的兩個點(diǎn)(斜率不存在的情況不考慮)。時間效率越高越好。
12、一個整數(shù)數(shù)列,元素取值可能是0~65535中的任意一個數(shù),相同數(shù)值不會重復(fù)出現(xiàn)。0是例外,可以反復(fù)出現(xiàn)。
請?jiān)O(shè)計(jì)一個算法,當(dāng)你從該數(shù)列中隨意選取5個數(shù)值,判斷這5個數(shù)值是否連續(xù)相鄰。
注意:
- 5個數(shù)值允許是亂序的。比如: 8 7 5 0 6
- 0可以通配任意數(shù)值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出現(xiàn)。
- 復(fù)雜度如果是O(n2)則不得分。
13、設(shè)計(jì)一個算法,找出二叉樹上任意兩個結(jié)點(diǎn)的最近共同父結(jié)點(diǎn)。
復(fù)雜度如果是O(n2)則不得分。
14、一棵排序二叉樹,令 f=(最大值+最小值)/2,
設(shè)計(jì)一個算法,找出距離f值最近、大于f值的結(jié)點(diǎn)。
復(fù)雜度如果是O(n2)則不得分。
15、一個整數(shù)數(shù)列,元素取值可能是1~N(N是一個較大的正整數(shù))中的任意一個數(shù),相同數(shù)值不會重復(fù)出現(xiàn)。
設(shè)計(jì)一個算法,找出數(shù)列中符合條件的數(shù)對的個數(shù),滿足數(shù)對中兩數(shù)的和等于N+1。
復(fù)雜度最好是O(n),如果是O(n2)則不得分。