原创 雙拼輸入法是個啥以及我是如何學會使用它的

話說:自從學會用雙拼輸入法,我就再也不想用回全拼了 雙拼輸入法 要知道啥是雙拼,就先引入全拼的概念 全拼就是大部分同學使用的拼音輸入法,通過在鍵盤上敲出完整的拼音來打出漢字 衆所周知拼音可以分爲聲母和韻母 比如“牛”這個字,聲母是

原创 序列化二叉樹

題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式保存爲字符串,從而使得內存中建立起來的二叉樹可以持久保存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方

原创 鏈表中倒數第k個結點

題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 思路:雙指針 設置一個快指針一個慢指針,都指向頭結點 快指針先走k-1步 然後快慢指針同速走,直到快指針走到尾,此時慢指針指向的就是倒數第k個結點 /* struct List

原创 最小的K個數

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 思路1:冒泡排序O(n*k) 當然,如果是海量數據,那麼此時效率太低 class Solutio

原创 機器人的運動範圍

題目描述 地上有一個m行和n列的方格。一個機器人從座標0,0的格子開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數位之和大於k的格子。 例如,當k爲18時,機器人能夠進入方格(35,37),因爲

原创 正則表達式匹配

題目描述 請實現一個函數用來匹配包括’.‘和’*‘的正則表達式。模式中的字符’.‘表示任意一個字符,而’*'表示它前面的字符可以出現任意次(包含0次)。 在本題中,匹配是指字符串的所有字符匹配整個模式。例如,字符串"aaa"與模式

原创 矩陣中的路徑

題目描述 請設計一個函數,用來判斷在一個矩陣中是否存在一條包含某字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始,每一步可以在矩陣中向左,向右,向上,向下移動一個格子。如果一條路徑經過了矩陣中的某一個格子,則該路徑不能再進

原创 複雜鏈表的複製

題目描述 輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果爲複製後複雜鏈表的head。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空) 思路

原创 樹的子結構

題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) 思路:遞歸 先看根節點是否和子樹根節點匹配 不是的話就看左子樹和右子樹,這樣層層遞歸 判斷匹配的話也用遞歸, 先看根結點是否相同

原创 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重

原创 滑動窗口的最大值

題目描述 給定一個數組和滑動窗口的大小,找出所有滑動窗口裏數值的最大值。例如,如果輸入數組{2,3,4,2,6,2,5,1}及滑動窗口的大小3,那麼一共存在6個滑動窗口,他們的最大值分別爲{4,4,6,6,6,5}; 針對數組{2

原创 按之字形順序打印二叉樹

題目描述 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 總體思路:層次遍歷 思路1:藉助雙端隊列 每一層存進去的時候 保證 每層的

原创 撲克牌順子

題目描述 LL今天心情特別好,因爲他去買了一副撲克牌,發現裏面居然有2個大王,2個小王(一副牌原本是54張_)…他隨機從中抽出了5張牌,想測測自己的手氣,看看能不能抽到順子,如果抽到的話,他決定去買體育彩票,嘿嘿!!“紅心A,黑桃

原创 合併兩個排序的鏈表

題目描述 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 思路1:遞歸 首先比較倆鏈表頭,小的那個作爲新鏈表的頭,新鏈表的頭指向的就是剩下鏈表合併的結果,使用遞歸 /* struct

原创 二叉搜索樹與雙向鏈表

題目描述 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 思路1:遞歸、左中右的中序遍歷 head作爲要返回的頭結點 首先問題是要得到一條鏈 那麼可以先得到左子樹