原创 劍指Offer(六十六):機器人的運動範圍(C++/Python)

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

原创 劍指Offer(六十三):數據流中的中位數(C++/Python)

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

原创 劍指Offer(四十七):求1+2+3+……+n(C++/Python)

題目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 解題思路 可以利用A&&B的隱含判斷,當A錯誤,則不運行B C++版 class

原创 劍指Offer算法題題解(C++/Python)

OJ地址:https://www.nowcoder.com/ta/coding-interviews?query=&asc=true&order=&page=4 打☆的題目建議多做幾遍,後期有機會會更新一下Java版本。 題目 考點 題解

原创 劍指Offer(六十一):序列化二叉樹(C++/Python)

題目描述 請實現兩個函數,分別用來序列化和反序列化二叉樹 解題思路 序列化格式:根據前序遍歷,從根節點開始,nullptr記爲$ 序列化:遞歸,遍歷二叉樹,若遍歷的節點爲空節點,則記爲$,否則記錄其節點的值,並遞歸遍歷他的左孩子和右孩子。

原创 劍指Offer(六十五):矩陣中的路徑(C++/Python)

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

原创 劍指Offer(六十四):滑動窗口的最大值(C++/Python)

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

原创 劍指Offer(六十):把二叉樹打印成多行(C++/Python)

題目描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 解題思路 本題其實沒有59題難,用隊列保存將要打印的節點,每次遍歷到該節點的時候,將其彈出,並將其左右孩子(若存在)彈入隊列。不過爲了區分出每一層的分隔,設一個l

原创 劍指Offer(五十七):二叉樹的下一個節點(C++/Python)

題目描述 給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指針。 解題思路 分幾種情況討論: ①若該節點的右孩子不爲空,則中序遍歷的下一個節點爲右子樹的最左節

原创 劍指Offer(五十五):鏈表中環的入口節點(C++/Python)

題目描述 給一個鏈表,若其中包含環,請找出該鏈表的環的入口結點,否則,輸出null。 解題思路 本題可以分解以下幾步: 首先判斷是否存在環:雙指針法,一快一慢兩個指針,若兩個指針可以相遇,說明有環存在。 其次計算環中節點的個數:在上述相遇

原创 劍指Offer(五十):數組中重複的數字(C++/Python)

題目描述 在一個長度爲n的數組裏的所有數字都在0到n-1的範圍內。 數組中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出數組中任意一個重複的數字。 例如,如果輸入長度爲7的數組{2,3,1,0,2,5,3}

原创 劍指Offer(五十三):表示數值的字符串(C++/Python)

題目描述 請實現一個函數用來判斷字符串是否表示數值(包括整數和小數)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示數值。 但是"12e","1a3.14","1.2.3","+-5"和"12

原创 劍指Offer(五十二):正則表達式匹配(C++/Python)

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

原创 劍指Offer(五十一):構建乘積數組(C++/Python)

題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 解題思路 將B[i]=A

原创 劍指Offer(四十九):把字符串轉換成整數(C++/Python)

題目描述 將一個字符串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字符串轉換整數的庫函數。 數值爲0或者字符串不是一個合法的數值則返回0。 輸入描述: