原创 leetcode刷題(74)——215.數組中的第K個最大元素

在未排序的數組中找到第 k 個最大的元素。請注意,你需要找的是數組排序後的第 k 個最大的元素,而不是第 k 個不同的元素。 示例 1: 輸入: [3,2,1,5,6,4] 和 k = 2 輸出: 5 示例 2: 輸入: [3,2

原创 Android使用kotlin自定義plugin插件找不到類,Unable to load class

情況是這樣,自定義gradle plugin,新建了一個module,並引入了groovy插件 apply plugin: 'groovy' 同時resources下也生聲明瞭 使用如下代碼上傳到本地倉庫 uploadArch

原创 leetcode刷題(62)——309. 最佳買賣股票時機含冷凍期

給定一個整數數組,其中第 i 個元素代表了第 i 天的股票價格 。​ 設計一個算法計算出最大利潤。在滿足以下約束條件下,你可以儘可能地完成更多的交易(多次買賣一支股票): 你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票

原创 leetcode刷題(67)——567. 字符串的排列

給定兩個字符串 s1 和 s2,寫一個函數來判斷 s2 是否包含 s1 的排列。 換句話說,第一個字符串的排列之一是第二個字符串的子串。 示例1: 輸入: s1 = “ab” s2 = “eidbaooo” 輸出: True 解釋

原创 leetcode刷題(84)——9. 迴文數

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。 示例 1: 輸入: 121 輸出: true 示例 2: 輸入: -121 輸出: false 解釋: 從左向右讀, 爲 -121 。 從右

原创 leetcode刷題(83)——面試題46. 把數字翻譯成字符串

對於題目的理解,其實也不難,我們並沒有必要把數字真的轉換成它要求的字母,只要得出有多少種分割方法就行了。 這種分割的問題也叫“隔板問題”——在數字之間的縫隙裏插入隔板,看有多少種分法,是一類組合問題。這裏由於受到26個字母的限制,

原创 leetcode刷題(85)——739.每日溫度

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

原创 Android Apk瘦身方案1——R.java文件常量內聯

R.java 文件結構 R.java 是自動生成的,它包含了應用內所有資源的名稱到數值的映射關係。先創建一個最簡單的工程,看看 R.java 文件的內容: R文件生成的目錄爲app/build/generated/not_nam

原创 Android Apk瘦身方案2——gradle插件將png自動壓縮爲webp

實現思路 在 mergeRes 和 processRes 任務之間插入 WebP 壓縮任務,如下圖所示: 使用開源框架Cwebp,使用命令行對所有的圖片進行遍歷處理,然後將結果輸出 Google 官方提供的下載地址:https:

原创 Android Gradle源碼分析

一.如何調試Android Gradle源碼 最簡單的方式如下: 1.配置 gradle.properties 比較方便的做法是配置全局的 gradle.properties,這樣對所有 Gradle 工具都適用,配置文件位於 ~

原创 leetcode刷題(82)——14. 最長公共前綴

編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴,返回空字符串 “”。 示例 1: 輸入: [“flower”,“flow”,“flight”] 輸出: “fl” 示例 2: 輸入: [“dog”,“raceca

原创 leetcode刷題(81)——103. 二叉樹的鋸齒形層次遍歷

給定一個二叉樹,返回其節點值的鋸齒形層次遍歷。(即先從左往右,再從右往左進行下一層遍歷,以此類推,層與層之間交替進行)。 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20

原创 都2020年了Andoid還能如何性能優化(1)—— 啓動速度優化

一.啓動類型 冷啓動 指進程死亡的情況下,從點擊應用圖標到UI界面完全顯示且用戶可操作的全部過程。 大致流程: Click Event -> IPC -> Process.start -> ActivityThread -> bi

原创 leetcode刷題(80)—— 23. 合併K個排序鏈表

合併 k 個排序鏈表,返回合併後的排序鏈表。請分析和描述算法的複雜度。 示例: 輸入: [ 1->4->5, 1->3->4, 2->6 ] 輸出: 1->1->2->3->4->4->5->6 方法1:使用優先隊列

原创 leetcode刷題(79)—— 160. 相交鏈表

編寫一個程序,找到兩個單鏈表相交的起始節點。 如下面的兩個鏈表: 在節點 c1 開始相交。 示例 1: 輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,