原创 【LEETCODE】125.驗證迴文串

題目 給定一個字符串,驗證它是否是迴文串,只考慮字母和數字字符,可以忽略字母的大小寫。 分析 使用雙指針的方法遍歷整個字符串,判斷字符串是否是迴文字符串。 幾個要點: 1.Character.isLetterOrDigit()用來

原创 【LLETCODE】124.二叉樹中的最大路徑和

題目 給定一個非空二叉樹,返回其最大路徑和。 本題中,路徑被定義爲一條從樹中任意節點出發,達到任意節點的序列。該路徑至少包含一個節點,且不一定經過根節點。 思路 先考慮一個7個節點的完全二叉樹。想要遍歷所有可能的路徑,可以採用後序

原创 【LEETCODE】二叉樹的序列化和反序列化

題目 序列化是將一個數據結構或者對象轉換爲連續的比特位的操作,進而可以將轉換後的數據存儲在一個文件或者內存中,同時也可以通過網絡傳輸到另一個計算機環境,採取相反方式重構得到原數據。 請設計一個算法來實現二叉樹的序列化與反序列化。這

原创 【LEETCODE】55.跳躍遊戲

題目 給定一個非負整數數組,你最初位於數組的第一個位置。數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最後一個位置。 思路 使用貪心算法: 從數組最後一個開始遍歷,找到最靠前的可以遍歷到的位置。 如果las

原创 【LEETCODE】974. 和可被 K 整除的子數組

題目 給定一個整數數組 A,返回其中元素之和可被 K 整除的(連續、非空)子數組的數目。 思路 涉及連續子數組的問題,考慮使用前綴和解決問題。即存儲A[0]至當前數組項的和sum。 本題中,(A[j]-A[i])%K==0時,表

原创 【LEETCODE】542.矩陣

題目 給定一個由 0 和 1 組成的矩陣,找出每個元素到最近的 0 的距離。 兩個相鄰元素間的距離爲 1 。 思路 矩陣找最近距離的題目,首先考慮廣度優先遍歷算法。 最短距離是從0點開始逐層向外擴散,所以以所有值爲0的節點爲第一

原创 【LEETCODE】1371. 每個元音包含偶數次的最長子字符串

題目 給你一個字符串 s ,請你返回滿足以下條件的最長子字符串的長度:每個元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’ ,在子字符串中都恰好出現了偶數次。 思路 如何標識元音所在位置? (1) 前綴和:使用A[i][k]

原创 JAVA基礎(二)String/StringBuffer/StringBuilder/成員變量和局部變量/對象實體和對象引用

1. JAVA面向對象編程三大特徵 封裝:將一個對象的屬性私有化。提供一些可以被外界訪問的屬性方法,如果屬性不想被外界訪問,可以不被提供方法給外界訪問。 繼承:使用已存在類的定義作爲基礎建立新類的技術,新類必須繼承父類,可以增

原创 【LEETCODE】46.把數字翻譯成字符串

題目 給定一個數字,我們按照如下規則把它翻譯爲字符串:0 翻譯成 “a” ,1 翻譯成 “b”,……,11 翻譯成 “l”,……,25 翻譯成 “z”。一個數字可能有多個翻譯。請編程實現一個函數,用來計算一個數字有多少種不同的翻譯

原创 【LEETCODE】128.最長連續序列

題目 給定一個未排序的整數數組,找出最長連續序列的長度。 要求算法的時間複雜度爲 O(n)。 思路 一次遍歷無法找到整個連續序列最長的子序列。如果使用暴力解法需要O(n^2),不滿足題目要求。 因此考慮使用哈希表解決問題。 1.遍

原创 JAVA基礎(一)面向對象/JAVA基本特點/重載和重寫

1. 面向過程和麪向對象的區別 1.1 面向過程: 優點: 性能高。 相比於類調用需要實例化,開銷比較大。適用於單片機、嵌入式開發、Linux/Unix。 NOTICE: 嵌入式開發: ​ 嵌入式開發是指利用分立元件或集成器件

原创 【LEETCODE】680.驗證迴文字符串Ⅱ

題目 給定一個非空字符串 s,最多刪除一個字符。判斷是否能成爲迴文字符串。 思路 驗證是否是迴文字符,至少需要O(n)的時間複雜度。 因爲至多刪除一個字符,因此在刪除一個字符之後,進行判斷剩下的字符是否能構成迴文字符串即可。 代碼

原创 【LEETCODE】739.每日溫度

題目 根據每日 氣溫 列表,請重新生成一個列表,對應位置的輸出是需要再等待多久溫度纔會升高超過該日的天數。如果之後都不會升高,請在該位置用 0 來代替。 例如,給定一個列表 temperatures = [73, 74, 75,

原创 【LEETCODE】238.除自身以外數組的乘積

題目 給你一個長度爲 n 的整數數組 nums,其中 n > 1,返回輸出數組 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其餘各元素的乘積。 請不要使用除法,且在 O(n) 時間複雜度內完

原创 【LEETCODE】152.乘積最大子數組

題目 給定一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字),並返回該子數組所對應的乘積。 思路 使用動態規劃方法。 最樸素的想法,需要將每一種子數組都考慮到,即時間複雜度爲O(n^2)。