劍指Offer筆試題(1)

最近在準備一些暑期實習的筆試和面試,在牛客網上面做了一些題,現在整理出來供大家參考,希望和大家共同學習!題目不難,但是要做出來需要考慮時間復雜度、空間復雜的等等,同時還需要一些編程思想;

題目來源:牛客網 *本文所有題目的實現均為java代碼

題目一:二維數組中的查找

描述:
在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
解題思路: 代碼
將target與二維數組array第一行最后一個數做比較,如果target大于該行數,則不考慮第一行,相反不考慮最后一列,相等返回true;

題目二: 替換空格

描述:
請實現一個函數,將一個字符串中的空格替換成“%20”。例如,當字符串為We Are Happy.則經過替換之后的字符串為We%20Are%20Happy。
解題思路: 代碼

  • 解法一: 遍歷
  • 解法二: 直接使用replaceAll函數

題目三: 從尾到頭打印鏈表

描述:
輸入一個鏈表,從尾到頭打印鏈表每個節點的值。
解題思路: 代碼

  • 解法一: 使用棧的方法解決;
  • 解法二: 使用遞歸的方法,但是實質還是棧;

題目四: 重建二叉樹

描述
輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回;
解題思路: 代碼

  • 取前序遍歷第一個數字,該數字是跟節點;
  • 在中序遍歷中找到跟節點,則該跟節點左邊是左子數,右邊為右子數;
  • 以此遍歷,進行遞歸;

*注:如果這里兩個序列有重復數字又該怎么實現?

題目五: 用棧實現隊列

描述:
用兩個棧來實現一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。
解題思路: 代碼

  • 將所有數先存入第一個棧中;
  • 第一個棧出棧,按照出棧順序存入第二個棧中;
  • 再從第二個棧中出棧,即得到隊列;

題目六: 旋轉數組的最小數字

描述:
把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個非遞減序列的一個旋轉,輸出旋轉數組的最小元素。例如數組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該數組的最小值為1;
解題思路: 代碼
*這里如果不旋轉數組直接使用快排找最小數字,依然可以編譯通過;

題目七: 斐波那契數列

描述:
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項;
解題思路:代碼

  • 這里實現的斐波那契數列不使用遞歸的算法,遞歸算法重復計算的次數很多,當輸入n值很大時會出現stackOverflow報錯;
  • 所以這里采用的是一個簡單的動態規劃(數組遍歷)

題目八: 跳臺階/ 變態跳臺階

描述:
1, 一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
2, 如果青蛙一次可以跳上1級臺階, 2級臺階........ n級臺階. 求該青蛙跳上一個n級臺階總共有多少中跳法.
解題思路: 代碼
1, 遞歸,斐波那契數列
2, 遞歸思路:

  • 因為n級臺階,第一步有n種跳法:跳1級、跳2級、到跳n級 * 跳1級,剩下n-1級,則剩下跳法是f(n-1)
  • 跳2級,剩下n-2級,則剩下跳法是f(n-2) * 所以f(n)=f(n-1)+f(n-2)+...+f(1)
  • 因為f(n-1)=f(n-2)+f(n-3)+...+f(1)
  • 所以f(n)=2*f(n-1)

題目八: 矩形覆蓋

描述:
我們可以用2*1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?
解題思路:代碼
通過分析,這里依舊時斐波那契數列,不做贅述;

題目九: 二進制中1的個數

描述: 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。
解題思路: 代碼

  • 解法一: 這是一個比較討巧的做法,將二進制轉換為String,同時將0全部用替換為"",然后返回String長度;
  • 解法二: 將n與(n-1)相與,會將n最右邊的1去掉;
    舉例: n=10 1010&1001=1000 --> 1000&0111=0000; 兩次,即10的二進制數中有兩個1;

題目十: 數值的整數次方

描述:
給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。
解題思路: 代碼
先判斷指數的正負性,然后直接數學思路進行數相乘;
當然也可以直接使用Math.power(base,exponent);

劍指Offer筆試題(2)
以上代碼全部托管在 Github

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,800評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,755評論 2 371

推薦閱讀更多精彩內容