1,乙個整數數列,元素取值可能是1~n(n是乙個較大的正整數)中的任意乙個數,相同數值不會重複出現。
設計乙個演算法,找出數列中符合條件的數對的個數,滿足數對中兩數的和等於n+1。
最直接也最清晰的做法就是排序然後兩邊往中間同步走,o(nlogn) + o(n)。
不過既然相同數值不重複出現,還對空間沒啥說的,那就bitmap吧。。。可以做到o(n)。太無聊了,還要揣摩出題人的思路。
2,乙個整數數列,元素取值可能是0~65535中的任意乙個數,相同數值不會重複出現。0是例外,可以反覆出現。
請設計乙個演算法,當你從該數列中隨意選取5個數值,判斷這5個數值是否連續相鄰。
注意:- 5個數值允許是亂序的。比如: 8 7 5 0 6
- 0可以通配任意數值。比如:8 7 5 0 6 中的0可以通配成9或者4
- 0可以多次出現。
不管是5個還是500個,走一遍看一下min和max,減一減就可以了。。當然附帶上0的處理。
3,正整數序列q中的每個元素都至少能被正整數a和b中的乙個整除,現給定a和b,需要計算出q中的前幾項,例如,當a=3,b=5,n=6時,序列為3,5,6,9,10,12
(1)、設計乙個函式void generate(int a,int b,int n ,int * q)計算q的前幾項
(2)、設計測試資料來驗證函式程式在各種輸入下的正確性。
能被a整除的序列,是a的倍數,a, 2a, 3a, ...
能被b整除的序列,是b的倍數,b, 2b, 3b, ...
能被a或者b整除的序列,就是這兩個序列的merge。。剩下的略。
4,有乙個由大小寫組成的字串,現在需要對他進行修改,將其中的所有小寫字母排在大寫字母的前面(大寫或小寫字母之間不要求保持原來次序),如有可能盡量選擇時間和空間效率高的演算法 c語言函式原型void proc(char *str) 也可以採用你自己熟悉的語言。
這其實是qsort中partition的一步,略。
5,輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入「i am a student.」,則輸出「student. a am i」。
只要先將整個句子翻轉一次,然後每個單詞內部再翻轉一次,就行了,**暫略。
一些面試題
q 您在什麼情況下會用到虛方法?它與介面有什麼不同?a 當在繼承類中想重寫某一方法時會用到虛方法 虛方法是類的成員函式,介面相當於抽象類.q override與過載有什麼區別?a override 就是覆蓋的意思,覆蓋父類的同名方法,而過載則是通過參數列來呼叫方法.q 值型別與引用型別有什麼區別?a...
一些面試題
1.如何檢視埠8080的程序 netstat anp grep 8080 lsof i 8080 2.在 tmp目錄下建立test.txt檔案,內容為 hello,world 用乙個命令寫出來。echo hello,world tmp test.txt 3.敘述下列服務的預設埠號。ftp 20,21...
一些面試題
1.給你乙個長度為n的鍊錶。n很大,但你不知道n有多大。你的任務是從這n個元素中隨機取出k個元素。你只能遍歷這個鍊錶一次。你的演算法必須保證取出的元素恰好有k個,且它們是完全隨機的 出現概率均等 解 先選中前k個,從第k 1個元素到最後乙個元素為止,以k i i k 1,k 2,n 的概率選中第i個...