LeetCode系列文章

解題專區,喜歡程式的開發者都應該嘗試看看

LeetCode系列文章

[LeetCode] #7 Reverse Integer 解題

題目連結 題型解說 這是一題難度為簡單的題目 需要設計一個方法,此方法會傳入一個整數 x,將 x 反轉後輸出 範例: x = 123,則回傳 321 x = -987,則回傳 -789 如果 x 反轉後溢位(超出 int 的範圍),則輸出 0 解題思路 此題可以由兩個思路來下手 一. 用數學的四則運算來求解 宣告一個 long 的變數(防止溢位) result,之後開始對 x 和 result 做運算,步驟如下 1. 將 result * 10 2. 對 x % 10 得到個位數

By Michael

LeetCode系列文章

[LeetCode] #276 Paint Fence 解題

題目連結 題型解說 這是一題難度為簡單的題目 需要設計一個方法,此方法會傳入 柱子的數量(n) 及 顏色的數量(k) 且 n 與 k 為正整數 試問可以組合出幾種顏色的組合,且相同顏色不可以連續兩隻以上 範例: n = 3,k = 2 可以組合出六種結果 顏色我們就用 R 跟 B 代替 * 第一種組合    R    R    B * 第二種組合    R    B    R * 第三種組合    R    B    B * 第四種組合    B    B    R * 第五種組合    B    R    B * 第六種組合    B

By Michael

LeetCode系列文章

[LeetCode]超級無恥的過關方法

以下方式請斟酌使用 最近又開始玩 LeetCode 的題目,想要來寫些文章充實一下部落格 無意間發現一種非常無恥的過關方式 利用這種方式保證過關且都是0ms 這是怎麼做到的呢?? 我們就拿第五題來當範例 Java版本 class Solution { public boolean isMatch(String s, String p) { boolean x = false; System.exit(0); return x; } } Python版本 class Solution: def isMatch(self, s: str, p: str) -> bool: os._exit(0) 將以上程式碼拿去任何一道程式題都可以完美過關 只需要修改一下回傳的部分讓編譯通過 不得不說這真是非常無恥阿~~~ 利用這種方式可以刷出非常好看的過關紀錄 若希望在履歷上可以寫上 LeetCode 全通關 這幾個字的人可以嘗試一下

By Michael

LeetCode系列文章

[LeetCode] #3 Longest Substring Without Repeating Characters 解題

題目連結 題型解說 這是一題難度為普通的題目 需要設計一個方法,此方法會傳入一個字串 s 要求是找出字串內連續且不重複的字元的長度 abcabcbb => abc => 3 pwwkew => wke => 3 解題思路 創建一個 List ,並走訪一遍字串 遇到 List 沒有的字元就加入 遇到重複的字元就比較當下最大長度與前面最大長度 並且把重複字元前的所有字元移除 程式碼 Java public class Solution { public int lengthOfLongestSubstring(String s) { if (s == null) { return 0; } if (s.length() < 2) { return 1; } int max = 0; List li

By Michael

LeetCode系列文章

[LeetCode] #2 Add Two Numbers 解題

題目連結 題型解說 這是一題難度為普通的題目 需要設計一個方法,此方法有兩個 Linked lists 參數 這兩個參數有以下特性 1. 皆為正整數 2. 鏈表中的數字順序相反 3. 沒有前導0,也就是不會出現 080 這種數字 4. 兩者都非空 要求是加總這兩個鏈表中的數字後以倒序的方式回傳 解題思路 創建兩個鏈表變數,一個代表起始點,一個代表結束點 一個 while 迴圈走訪所有的元素做加總 程式碼 Java public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode temp = new ListNode(0); ListNode result = temp; int num1

By Michael

LeetCode系列文章

[LeetCode] #1 Two Sum 解題

題目連結 題型解說 這是一題難度為簡單的題目,主要是用來暖個身 需要設計一個方法,此方法有兩個參數 第一個參數是一個數字的數組,第二個參數是一個目標數字 要求是找出數組中哪兩個數字相加等於目標數字 回傳索引 解題思路 大多數人(包括我)的第一印象就是利用兩個迴圈來計算出結果 當然相信這種方法也是可以得出一樣的答案 但是效率上就會比較低效 而且也過不了LeetCode的測試案例 所以得換個方式,利用空間換取時間 創建一個Map,Key紀錄數字、Value紀錄索引 目標數減去當下數字的差存在Map中,直接回傳結果 不存在則將當下數字存入Map 程式碼 Java public class Solution { public int[] twoSum(int[] nums, int target) { Map temp = new HashMap<>(); for (int i = 0, len = nums.length

By Michael