原创 劍指offer-數字序列中的某一位(leetcode)

又是一道找規律的題目,頭大得很。 爲了方便10 - n 位的規律,我們默認n >= 10,其他情況只要renturn n; 就可以了。 0-9               1              10 10-99         

原创 劍指offer-把數字翻譯爲字符串(leetcode)

這道題可以看作是動態規劃類的題目,類似於跳臺階的題目。 例如:12258 狀態轉移方程:dp[i] = dp[i+1] + dp[i+2] class Solution { public: int translateNum(in

原创 劍指offer-數組中出現次數最多的數字

常規算法不就說了,這次看到大佬的題解,特地記錄以下。 解法名稱爲:摩爾投票法 假設出現次數最多的數字爲 x,當nums[i] == x 時,votes += 1,否則 votes -= 1 由此我們可以知道,遍歷完數組後,votes >

原创 劍指offer-數組中重複的數字(leetcode)

題目描述: 找出數組中重複的數字。 在一個長度爲 n 的數組 nums 裏的所有數字都在 0~n-1 的範圍內。數組中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數組中任意一個重複的數字。 簡單來說就是找

原创 劍指offer-剪繩子(leetcode)

這是一道動態規劃的題目,如果看不出出來的話,可以模擬該題的過程。 狀態轉移方程:dp[i] = max( dp[j] * dp[i-j], i * (j-i) )  但是我們可以通過進一步觀察當 n > 4 的時候,(i-j)< dp[i

原创 劍指offer-用兩個棧實現隊列(leetcode)

這道題目的思路很簡單:將輸入的數據壓入s1中,再將s1中的數據壓入s2中,這樣s2的出棧順序就和隊列的出隊順序一致。 但是在判斷出棧的時候要先判斷s2是否爲空,再判斷s1是否爲空。 若兩者都爲空,則輸出-1 若s2不爲空,則返回棧頂元素

原创 劍指offer-青蛙跳臺階(leetcode)

因爲小青蛙一次只能跳1/2個臺階,因此如果要跳到第n個臺階,只能從n-1或者n-2臺階跳上去。典型的斐波那契數列,只不過第0項也爲1,只有這點區別。 class Solution { public: int numWays(in

原创 劍指offer-旋轉數組的最小數字(leetcode)

這道題目用到了二分查找的思想。 nums[middle] > nums[end] :可以確定最小數字在(middle+1,end)這個區間 nums[middle] < nums[end] :可以確定最小數字在(start, middle

原创 轉載:數據庫--視圖的基本概念以及作用

轉載來源:https://blog.csdn.net/buhuikanjian/article/details/53105416 視圖(子查詢):是從一個或多個表導出的虛擬的表,其內容由查詢定義。具有普通表的結構,但是不實現數據

原创 劍指offer-二維數組中的查找(leetcode)

這道題的解法核心就是:從右上角不斷搜索。 若 matrix[row][col] == target  則return true; 若 matrix[row][col] > target,則向該數字的左方繼續搜索,即col--; 若 mat

原创 劍指offer-機器人的運動範圍(leetcode)

這道題目可以使用回溯的方法來做,但是想來想去應該有更加簡潔的算法,即如下想法: 因爲機器人的可達路徑總是由左至右或者由上至下的方式到達,也就是說,一個地點是否可達,不僅取決於自身座標是否符合要求,而且其左邊或者上邊的地點也要可達,從而可以

原创 leetcode 61. 旋轉鏈表

鏈表的應用 乍一看這道題很麻煩,不過當我們仔細觀察後可以發現,不論 k 取何值,旋轉的次數實際爲 k % len ,len 爲鏈表的長度。因此這道題的任務就是找到倒數第 k 個數據,使倒數第 k-1 個數據的next 指向 NULL,最後

原创 leetcode 64. 最小路徑和

經典的動態規劃題目 因爲只能通過向下或者向右走,不需要考慮對角等因素,而且要求的是最小路徑和。因此,可以很容易得到狀態轉移方程 grid[i][j] += grid[i-1][j] < grid[i][j-1] ? grid[i-1][j

原创 leetcode 70. 爬樓梯

感覺動態規劃的前幾道題有點水~_~ 申請一個一維數組dp,dp[i] 表示走到 i+1 層有多少種方式。一次只可以走一步或者兩步,由此可以得到狀態轉移方程        dp[i] = dp[i-1] + dp[i-2]; 再做好數組初始

原创 leetcode 19. 刪除鏈表的倒數第N個節點

依舊是鏈表的應用 最開始看到這道題的時候,想法很暴力,遍歷一遍得到長度,然後再遍歷一遍刪除指定元素。後來看來大佬的題解發現可以使用雙指針的方法,只需要一次遍歷就可以刪除指定節點。 需要注意的一點是,雖然題目中已經說明 n 是有效數字,但是