原创 遞歸乘法之位運算

遞歸乘法。 寫一個遞歸函數,不使用 * 運算符, 實現兩個正整數的相乘。可以使用加號、減號、位移,但要吝嗇一些。 例題: 輸入:A = 1, B = 10 輸出:10 思路: 1.遞歸加法 兩個數相乘,a*b等價於將b加個a次

原创 搖擺序列之找拐點

如果連續數字之間的差嚴格地在正數和負數之間交替,則數字序列稱爲擺動序列。第一個差(如果存在的話)可能是正數或負數。少於兩個元素的序列也是擺動序列。 例如, [1,7,4,9,2,5] 是一個擺動序列,因爲差值 (6,-3,5,-7

原创 貪心算法——移除K位數字

給定一個以字符串表示的非負整數 num,移除這個數中的 k 位數字,使得剩下的數字最小。 注意: num 的長度小於 10002 且 ≥ k。 num 不會包含任何前導零。 例子: 輸入: num = “1432219”, k =

原创 模擬行走機器人之略有技巧的貪心算法

機器人在一個無限大小的網格上行走,從點 (0, 0) 處開始出發,面向北方。該機器人可以接收以下三種類型的命令: -2:向左轉 90 度 -1:向右轉 90 度 1 <= x <= 9:向前移動 x 個單位長度 在網格上有一些格子

原创 檢查一個字符串是否可以打破另一個字符串

給你兩個字符串 s1 和 s2 ,它們長度相等,請你檢查是否存在一個 s1 的排列可以打破 s2 的一個排列,或者是否存在一個 s2 的排列可以打破 s1 的一個排列。 字符串 x 可以打破字符串 y (兩者長度都爲 n )需滿

原创 跳躍遊戲之超簡單的貪心算法

給定一個非負整數數組,你最初位於數組的第一個位置。 數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最後一個位置。 例子: 輸入: [2,3,1,1,4] 輸出: true 解釋: 我們可以先跳 1 步,從位

原创 刪列造序之省存的遞歸解法

給定由 N 個小寫字母字符串組成的數組 A,其中每個字符串長度相等。 你需要選出一組要刪掉的列 D,對 A 執行刪除操作,使 A 中剩餘的每一列都是 非降序 排列的,然後請你返回 D.length 的最小可能值。 刪除 操作的定義

原创 交換字符使得字符串相同之超易懂的貪心算法問題

有兩個長度相同的字符串 s1 和 s2,且它們其中 只含有 字符 “x” 和 “y”,你需要通過「交換字符」的方式使這兩個字符串相同。 每次「交換字符」的時候,你都可以在兩個字符串中各選一個字符進行交換。 交換隻能發生在兩個不同的

原创 單調遞增的數字之貪心算法

給定一個非負整數 N,找出小於或等於 N 的最大的整數,同時這個整數需要滿足其各個位數上的數字是單調遞增。 (當且僅當每個相鄰位數上的數字 x 和 y 滿足 x <= y 時,我們稱這個整數是單調遞增的。) 貪心策略: 情況1:

原创 行相等的最少多米諾旋轉之貪心問題

在一排多米諾骨牌中,A[i] 和 B[i] 分別代表第 i 個多米諾骨牌的上半部分和下半部分。(一個多米諾是兩個從 1 到 6 的數字同列平鋪形成的 —— 該平鋪的每一半上都有一個數字。) 我們可以旋轉第 i 張多米諾,使得 A[