Yoru Karu Studio

程式設計學習筆記 | 生活心得

LeetCode 解題思路:5. Longest Palindromic Substring(最長回文子字串)

題目描述

給定一個字串 s,找到 s 中最長的回文子字串。

回文(Palindrome):正著讀和反著讀都一樣的字串,例如 “aba”、“noon”。

範例:

輸入:s = "babad"
輸出:"bab"
解釋:"aba" 也是有效答案

輸入:s = "cbbd"
輸出:"bb"

輸入:s = "a"
輸出:"a"

輸入:s = "ac"
輸出:"a" 或 "c"

LeetCode 解題思路:3. Longest Substring Without Repeating Characters(最長不重複子字串)

題目描述

給定一個字串 s,請你找出其中不含有重複字元的最長子字串的長度。

注意:子字串(substring)是連續的,子序列(subsequence)可以不連續。

範例:

輸入:s = "abcabcbb"
輸出:3
解釋:最長不重複子字串是 "abc",長度為 3

輸入:s = "bbbbb"
輸出:1
解釋:最長不重複子字串是 "b",長度為 1

輸入:s = "pwwkew"
輸出:3
解釋:最長不重複子字串是 "wke",長度為 3
注意答案必須是子字串,"pwke" 是子序列而不是子字串

LeetCode 解題思路:2. Add Two Numbers(兩數相加)

題目描述

給定兩個非空的鏈結串列,代表兩個非負整數。它們每位數字都是按照反向的方式儲存的,並且每個節點只能儲存一位數字。

請你將這兩個數字相加,並以相同的形式返回一個表示和的鏈結串列。

你可以假設除了數字 0 之外,這兩個數字都不會以 0 開頭。

範例:

輸入:l1 = [2,4,3], l2 = [5,6,4]
輸出:[7,0,8]
解釋:342 + 465 = 807

輸入:l1 = [0], l2 = [0]
輸出:[0]

輸入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
輸出:[8,9,9,9,0,0,0,1]
解釋:9999999 + 9999 = 10009998

LeetCode 解題思路:70 .Climbing Stairs(爬樓梯)

LeetCode 解題思路:Climbing Stairs(爬樓梯) 題目描述 你正在爬樓梯。需要 n 階才能到達樓頂。 每次你可以爬 1 或 2 個台階。有多少種不同的方法可以爬到樓頂? 範例 範例 1: 輸入:n = 2 輸出:2 解釋:有兩種方法可以爬到樓頂 1. 1 階 + 1 階 2. 2 階範例 2: 輸入:n = 3 輸出:3 解釋:有三種方法可以爬到樓頂 1. 1 階 + 1 階 + 1 階 2. 1 階 + 2 階 3. 2 階 + 1 階限制條件 1 <= n <= 45 核心概念 1. 問題本質分析 這是一個經典的動態規劃入門題。關鍵洞察: 到達第 n 階的方法數 = 到達第 (n-1) 階的方法數 + 到達第 (n-2) 階的方法數

LeetCode 解題思路:69. Sqrt(x)(平方根)

LeetCode 解題思路:Sqrt(x)(平方根) 題目描述 給定一個非負整數 x,返回 x 的平方根,結果向下取整到最接近的整數。返回的整數必須是非負的。 限制:你不能使用任何內建的指數函數或運算子。 例如,在 C++ 中不能使用 pow(x, 0.5) 在 Python 中不能使用 x ** 0.5 範例 範例 1: 輸入:x = 4 輸出:2 解釋:4 的平方根是 2,所以返回 2範例 2: 輸入:x = 8 輸出:2 解釋:8 的平方根是 2.82842...,向下取整後返回 2限制條件 0 <= x <= 2³¹ - 1 核心概念 1. 問題本質分析 這道題本質上是要找到一個最大的整數 ans,使得 ans² <= x。 換句話說,我們要找到滿足以下條件的最大整數: ans * ans <= x (ans + 1) * (ans + 1) > x 2. 為什麼適合用二分搜尋? 關鍵洞察:平方根函數是單調遞增的!

LeetCode 解題思路:67. Add Binary(二進位加法)

LeetCode 解題思路:Add Binary(二進位加法) 題目描述 給定兩個二進位字串 a 和 b,返回它們的和作為一個二進位字串。 這道題目考驗我們對進位制運算的理解,以及如何優雅地處理字串操作。 範例 範例 1: 輸入:a = "11", b = "1" 輸出:"100" 解釋:11 + 1 = 100(二進位)範例 2: 輸入:a = "1010", b = "1011" 輸出:"10101" 解釋:1010 + 1011 = 10101(二進位)限制條件 1 <= a.length, b.length <= 10⁴ a 和 b 僅由字符 '0' 或 '1' 組成 字串如果不是 "0",就不含前導零 核心概念 1. 理解二進位加法規則 在深入解題之前,讓我們先回顧二進位加法的基本規則: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10(結果為 0,進位 1) 1 + 1 + 1 = 11(結果為 1,進位 1)視覺化理解 範例:11 + 1 = 100 1 1 ← a + 1 ← b ------- 1 0 0 ← 結果 步驟分解: 位置: 2 1 0 ───── 第0位: 1+1 = 10 → 結果=0, 進位=1 第1位: 1+0+1(進位) = 10 → 結果=0, 進位=1 第2位: 0+0+1(進位) = 1 → 結果=1, 進位=02.
0%