原创 劍指offer - 65矩陣中的路徑

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

原创 劍指offer - 66機器人的運動範圍

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

原创 劍指offer - 63數據流中的中位數

題目描述 如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從數據流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert()方法讀取數據流,使

原创 C++面試 一 socket、tcp相關知識總結

1. socket編程知識     1> server和client函數調用流程         server: socket、bind、listen、accept、send/recv         client:socket、conn

原创 劍指offer - 64滑動窗口的最大值

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

原创 劍指offer - 61序列化二叉樹

題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹 思路如下: 1. 使用一個字符串保存二叉樹序列化的結果,序列化和反序列化,就是分別實現 二叉樹轉字符串,字符串轉二叉樹 2. 序列化時,使用前序遞歸遍歷, 將節點的值轉爲字符串,後

原创 劍指offer - 62二叉搜索樹的第k個結點

題目描述 給定一棵二叉搜索樹,請找出其中第k小的結點。例如,(5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值爲4。 思路如下: 二叉搜索樹的中序遍歷,就是從小到大遍歷,找到第k個節點,就是第k小的節點。 中序遍歷有遞歸

原创 linux 相關問題

1. gcc -o 優化等級 1. o0 不提供任何優化 2. o1 最基本的優化,針對代碼的分支,表達式,常量進行優化,編譯器會將代碼編程更加短小,減少內存的佔用率,操作系統進行內存調度時就會更快 3. o2 在上一級的基礎上會進行更嚴

原创 socket、tcp相關知識總結

1. socket編程知識     1> server和client函數調用流程         server: socket、bind、listen、accept、send/recv         client:socket、conn

原创 C++面試 一 內存管理

1. 內存泄漏     內存泄漏是程序中已動態分配的堆內存由於某種原因程序未釋放或無法釋放,造成系統內存的浪費,導致程序運行速度減慢甚至系統崩潰等嚴重後果     linux檢測內存泄漏的工具         mtrace        

原创 C++面試 一 進程和線程

1. 進程間的通信方法     1. 管道 pipe         管道也是一種文件,有兩種方式:匿名管道和命名管道         管道文件大小一般爲4K或64K         匿名管道:int fd[2]; if(pipe(fd)

原创 C++面試 一 基礎

1. 關鍵字的作用:     extern:         1. 用在變量和函數前面,表示定義在其他文件或模塊中;             經常出現extern的變量和函數,和聲明的不一樣,一般解決方法是,放到頭文件中加extern,其

原创 劍指offer - 63二叉搜索樹的第k個結點

題目描述 給定一棵二叉搜索樹,請找出其中第k小的結點。例如,(5,3,7,2,4,6,8) 中,按結點數值大小順序第三小結點的值爲4。 思路如下: 二叉搜索樹的中序遍歷,就是從小到大遍歷,找到第k個節點,就是第k小的節點。 中序遍歷有遞歸

原创 劍指offer - 60把二叉樹打印成多行

題目描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 思路如下: 使用層次遍歷即可 代碼如下: /* struct TreeNode { int val; struct TreeNode *left

原创 劍指offer - 59按之字形順序打印二叉樹

題目描述 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 思路如下: 奇數層從左向右,偶數層從右向左,可以使用兩個棧分別保存奇數層和偶數層,