原创 3種解法 - 灌溉花園的最少水龍頭數目

文章目錄題目解法一(深度優先搜索)解法二(廣度優先搜索)解法三(貪心算法) 題目 在 x 軸上有一個一維的花園。花園長度爲 n,從點 0 開始,到點 n 結束。 花園裏總共有 n + 1 個水龍頭,分別位於 [0, 1, …,

原创 2種算法 - 最大得分的路徑數目

文章目錄題目解法一(循環)解法二(遞歸) 題目 給你一個正方形字符數組 board ,你從數組最右下方的字符 ‘S’ 出發。 你的目標是到達數組最左上角的字符 ‘E’ ,數組剩餘的部分爲數字字符 1, 2, …, 9 或者障礙

原创 2種解法 - 獲取一條直線上最多的點數

文章目錄題目解法一(直線斜率)解法二(最簡分子式) 題目 給定一個二維平面,平面上有 n 個點,求最多有多少個點在同一條直線上。 示例 1: 輸入: [[1,1],[2,2],[3,3]] 輸出: 3 解釋: ^ | |

原创 2種解法 - 二進制字符串求和

題目 給定兩個二進制字符串,返回他們的和(用二進制表示)。 輸入爲非空字符串且只包含數字 1 和 0。 示例 1: 輸入: a = “11”, b = “1” 輸出: “100” 示例 2: 輸入: a = “1010”, b =

原创 3種解法 - 實現字符串Z字形變換

文章目錄題目解法一(數學推理)解法二(按列存儲)解法三(按行存儲) 題目 將一個給定字符串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。 比如輸入字符串爲 “LEETCODEISHIRING” 行數爲 3 時,排列如下

原创 2種解法 - 完成跳躍遊戲

文章目錄題目解法一(雙指針法)解法二(暴力法) 題目 你一個整數數組 arr ,你一開始在數組的第一個元素處(下標爲 0)。 每一步,你可以從下標 i 跳到下標: i + 1 滿足:i + 1 < arr.length i -

原创 4種解法 - 不同的循環子字符串

題目 給你一個字符串 text ,請你返回滿足下述條件的 不同 非空子字符串的數目:這些子字符串可以寫成某個字符串與其自身的串聯。 示例 1: 輸入:text = “abcabcabc” 輸出:3 解釋:3 個子字符串分別爲 “a

原创 hash表容量建議是2的冪次,源碼解釋

優秀的hash函數要儘可能保證hash值均勻分佈在空間中,如果太密集容易衝突,如果太稀疏存儲效率也不高。 Java中的hash函數如下: int hash(Object key) { int h = key.hashCod

原创 2種算法 - 使用減法實現兩數相除

文章目錄題目解法一解法二 題目 給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算符。 返回被除數 dividend 除以除數 divisor 得到的商。 示例 1:

原创 2種解法:分數轉化爲小數形式

文章目錄題目解法一(字典/哈希表)解法二(線性表List) 題目 給定兩個整數,分別表示分數的分子 numerator 和分母 denominator,以字符串形式返回小數。 如果小數部分爲循環小數,則將循環的部分括在括號內。

原创 2種解法 - 實現字符串相乘

題目 給定兩個以字符串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示爲字符串形式。 示例 1: 輸入: num1 = “2”, num2 = “3” 輸出: “6” 示例 2:

原创 2種算法 - 統計質數的個數

文章目錄題目解法一(檢測)解法二(賦值) 題目 統計所有小於非負整數 n 的質數的數量。 示例: 輸入: 10 輸出: 4 解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。 解法一(檢測) 思路:從

原创 數值直接交換及原理解釋

問題: 如果實現兩個數值直接交換,不使用第三個臨時數值存儲。 實現: 這個答案比較常見了,就是用異或實現源碼如下,本文解釋下其原理: void exchange(int a, int b) { print(a,b); a=a^

原创 3種解法 - 求解最長迴文子串

文章目錄題目解法一(暴力法)解法二(中心擴展)解法三(動態規劃) 題目 給定一個字符串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度爲 1000。 示例 1: 輸入: “babad” 輸出: “bab” 注意: “

原创 3種解法 - 計算無重複字符的最長子串

文章目錄題目解法一(滑動窗口)解法二(固定數組)解法三(暴力法) 題目 給定一個字符串,請你找出其中不含有重複字符的 最長子串 的長度。 示例 1: 輸入: “abcabcbb” 輸出: 3 解釋: 因爲無重複字符的最長子串是