劍指offer 面試題(1)

2021-12-29 22:28:40 字數 1936 閱讀 3136

#這兩天通過做作業接觸了《劍指offer》 這本書;覺得裡面的面試題真是異常經典,當你看到那一道一道面試題時,對自我的做題筆試能力肯定會大有脾益!

# 平常可以多做練習,養成乙個習慣!好了,廢話不多說了,直接上題吧! 我已經感到****了!

# 第一道:

/*劍指offer 面試題14:調整陣列使奇數全部都位於偶數前面。

題目:輸入乙個整數陣列,實現乙個函式,

來調整該陣列中數字的順序使得陣列中所有的奇數字於陣列的前半部分,

所有偶數字於陣列的後半部分。*/

首先,剛看到這道題的時候我是挺沒有頭緒的(可能是因為大早上剛睡醒

),於是思考著題,在本子上畫了畫,

第一步: 肯定要把偶數判別一下,那很簡單了, 大家都知道 除2餘0即為偶數!

第二步: 怎樣把偶數放到後面,奇數放在前面, 暫時只想到交換;即是偶數就和最後面的數交換,下乙個偶數和倒數

第二個數交換;最後肯定會相遇,即迴圈結束!

第三步: 思路是有了,接下來就是**的實現了(一些細微的優化在演算法中實現)!

**:#include

#include

void int_sort(unsigned int arr,int sz)

if(!(*left%2))

else if(num > arr[rows][cols])

rows++;//目標大於右上角即排除一行;

else

cols--;//否則小於排除一列;

}return found;

}int main()

,,,};

int num = -1;

int row = sizeof(arr)/sizeof(arr[0]);//四行,即四個一維陣列;

int col = (sizeof(arr)/sizeof(arr[0][0]))/row;//4列

printf("%d\n",number_sort(arr,row,col,num));

system("pause");

return 0;

}/*這道題的實現並不難,難得是想到演算法,對於我這種天子並不聰慧的只有多練,看到的多了,演算法也就懂得多了*/# 第三道:/*劍指offer 面試題35:乙個字串中查詢第乙個只出現一次的字元。要求複雜度為o(n).例如:字串:"aaaabfqccrbddw",返回f.*/首先,我一看到這道題的第一想法便是遍歷一遍找出只出現一次的字母,提前定義乙個字元陣列儲存count==1的字元,輸出這個陣列的第乙個元素既為第乙個只出現一次的字母,這種方法是可行的,在以前做的一道題裡,在乙個整形陣列中找只出現一次的數字,我就是這只計數器這樣做的,有興趣的同學可以實現一下,我在這裡只實現劍指offer的雜湊表演算法(我自己覺得和我的演算法大同小異

);第一步: 適當了解什麼是雜湊表,當然在這道題裡只是用了最簡單的雜湊表,我也不做重點介紹了, 在這道題,所謂雜湊表就是定義乙個 大小為256 的陣列,因為字元的ascll碼是0-255; 字串中的每個字元的ascll碼對應陣列的下標,即str[ a ];第二步:先通過乙個迴圈將字串**現的字元對應的 ascll 碼下標的陣列內容置為 字元出現的次數;時間複雜度為o(n);再通過乙個迴圈遍歷 雜湊表中找出第乙個 內容為 1 的陣列下標並返回對應字元!對雜湊表的遍歷時間複雜度也是o(n);所以總的時間複雜度是o(n);(感覺有點牽強啊

);第三步: 接下來就是**的實現:#include

#include

#include

char foundonlyoncechar( char *arr)

;//對雜湊表的初始化都為0初始時預設所有字元出現次數為0

char *p = arr;//儲存初始位置,為第二次迴圈提供;

while(*arr)

while(*p)//第二次迴圈,通過字串遍歷雜湊表找出第乙個出現一次的字元;

return '\0';//如果沒有出現一次的字元則返回『\0』;

}int main()

劍指offer 面試題 (替換空格) 1

題目分析 首先,我們應該想到的是原來是乙個空格字元,替換之後變為三個字元 2 0 如果我們直接在原來的字串上進行替換,就有可能覆蓋掉原本的內容 如果是建立新的字串並 新的字串上做替換,那麼我們可以自己分配好足夠的記憶體,所以我們應該向面試官問清楚如果面 試官告訴你在原本的字串上做修改,並且記憶體足夠...

劍指offer面試題7

面試題7 用兩個棧實現佇列 using namespace std template class cqueue 預備知識 佇列 佇列也是一種常見的資料結構 特點是先進先出 fifo 在stl中有stack和queue兩個容器 template class stack 成員函式 empty size ...

劍指offer面試題11

面試題1 數值的整數的次方 題目 實現函式double power double base,int exponent 求base的 exponent次方。不得使用庫函式,同時不需要考慮大數問題。思路 首先應該明確指數的可能取值 正整數,0,負整數 另外還需要考慮底數是0的情形。對於負整指數,我們可以...