開始挑戰 Math 這個分類的題目,一樣是參考網路上已經有整理的 Leetcode 分类顺序表

參考的頻道或部落格條列如下,提供給大家參考:
YT:花花醬 / Cspiration 官方频道 / Jacob HuangbasketwangCoding今天比昨天厲害来Offer – LaiOffer小Q刷Leetcode
Blog:Grandyang

這篇基本上就是總覽,把解題過程的思路和參考的講解視頻以及其他參考資料都整理在下面。

No.完成日期難易度Leetcode Link網路講解視頻Memo
12020/10/18Easy7. Reverse IntegerLeetcode : 7. Reverse Integer 讲解將給定整數反轉
這題之前在判斷數字是否回文的時候有遇過,9. Palindrome Number,不過這次要處理負數,且需要記得處理超界的Case。
2Medium165. Compare Version Numbers贾考博 LeetCode 165. Compare Version Numbers 如果版本都搞错了,还开发个啥
[LeetCode] Compare Version Numbers 版本比较
比較版本號碼
先用點把數字一段一段切開,轉成整數後一個一個開始比較。
3Easy66. Plus One贾考博 LeetCode 66. Plus One
[LeetCode] Plus One 加一运算
將給定整數字串+1
因為輸入 1 <= digits.length <= 100,這題需要針對字串來處理。
首先先判斷是否要進位,如果要的話該位=0,繼續往前加;如果不需要進位,則直接回傳最後一個字元加一的結果。當整個字串遍歷完還沒 return,即表示需要在最前面多加一位元1。
4Medium8. String to Integer (atoi)[LeetCode] 8. String to Integer (atoi) 字符串转为整数把字符串轉成整數
這題跟 65. Valid Number 判斷是否為有效數字相同,但相較下更單純只要判斷正負/找出數字區間/避免 overflow 即可。
5Easy258. Add Digits[LeetCode] Add Digits 加数字求數根:將每一位數相加,直到剩下個位數
直接計算就是把每個位數相加,如果還是大於 10 則繼續直到只有一個位數。
進階一點題目要求O(1)時間,那就是考樹根的定義
dr​(n)=0, if n=0
dr(n)=9, if n=9k
dr(n) = n mod 9, if n != 9k
直接 num == 0 ? 0 : (num – 1) % 9 + 1; 一行解決
62020/10/20Easy67. Add Binary贾考博 LeetCode 67. Add Binary
[LeetCode] Add Binary 二进制数相加
相加兩給定字串
宣告兩個指針指向字串最後一位,每次取一個出來轉成數字,如果已經取完則等於0。另外宣告 carry 變數,初始化0。把兩個數字及 carry 加起來,取餘數等於當前位值,取商等於是否進位,最後在判斷是否有 carry 另外加上。
7Medium43. Multiply Strings[Leetcode 43] Multiply Strings
[LeetCode] 43. Multiply Strings 字符串相乘
相乘兩給定字串
兩字串相乘,最大長度就是兩個的長度和。根據乘法計算原理,從最後的位數開始往前乘,並加上目前位元的值(上一 run 的進位)訂一個 lo 存餘數,hi 存進位。最後再遍歷結果把 leading zero 去掉即可。
8Easy367. Valid Perfect Square[LeetCode] 367. Valid Perfect Square 检验完全平方数檢驗完全平方數
確認一個數是否為平方,使用二分查找或是找小於平方根的都可以,參考旁邊的連結有多種解法。
另外一個是 反平方根快速演算法,竟然可以在O(1)時間中找到。
9Easy204. Count Primes[LeetCode] 204. Count Primes 质数的个数判斷有幾個質數
厄拉托西尼 快速篩選出質數:先宣告一個N大小陣列初始成T,找到T後把後面他的倍數都標成F,如此一來即可先把非質數的篩出來跳過了。
10Easy1. Two Sum[LeetCode] 1. Two Sum 两数之和找出給定陣列中相加=Target 的兩個數字
用 map 紀錄&查找看是否出現過符合的值
11Easy167. Two Sum II – Input array is sorted[LeetCode] Two Sum II – Input array is sorted 两数之和之二 – 输入数组有序找出給定陣列中相加=Target 的兩個數字
基本上與上一題相同,差異在要輸出的 index 是從1開始計算&index 小的排前面。
另外也可以用2ptr 來解,一個從前往後一個從後往前。
122020/10/21Medium15. 3SumLeetcode : 15 3Sum 讲解
[Leetcode 15]3Sum
找出給定陣列中相加=0的三個數字
先將字串排序,從第一個開始當 base & 使用2ptr 遍歷後面找出相加=0的組合。
需要注意的是指針移動時需要跳過與當前相同的,才不會重複計算。
13Medium16. 3Sum Closest[LeetCode] 16. 3Sum Closest 最近三数之和找出給定陣列中相加最接近Target 的三個數字和
等同於上一題,新增一個 diff 變數記錄目前的最小值,以及一個 closet 紀錄 diff 為最小值的和。
14Medium18. 4SumLeetcode: 18 4Sum 讲解
贾考博 LeetCode 18. 4Sum
[LeetCode] 18. 4Sum 四数之和
找出給定陣列中相加=0的四個數字
與 3Sum 類似,外面再套一層就可以解 4Sum。
15Easy231. Power of Two[LeetCode] Power of Two 判断2的次方数判斷給定數字是否為2的次方
一個方式是直接/2,看是否有餘數;但這種方式較耗時,直接 bit operation:該數字−1再 or 自己會等於0。
16Easy326. Power of Three[LeetCode] Power of Three 判断3的次方数判斷給定數字是否為3的次方
直接/3,看是否有餘數,如果想看其他數學方式可參考旁邊的連結。
17Easy342. Power of Four[LeetCode] Power of Four 判断4的次方数判斷給定數字是否為4的次方
直接/4,看是否有餘數,如果想看其他數學方式可參考旁邊的連結。
18Easy202. Happy Number[LeetCode] Happy Number 快乐数判斷給定數字是否為快樂數(把每個 bit 平方和加起來最後會得到1)
用一個Set 存出現過的數,如果有重複則表示不是,如果得到1表示是。
19
20
21
22

倒讚>讚,之後再考慮回來刷:

29. Divide Two Integers
69. Sqrt(x)
50. Pow(x, n)
365. Water and Jug Problem

372. Super Pow
233. Number of Digit One
319. Bulb Switcher
292. Nim Game
400. Nth Digit
263. Ugly Number

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料