原创 動態規劃中 用O(n)時間遍歷數組

  上上節已經初步介紹了動態規劃算法,並結合LeetCode 279題進行了詳細講解。然而在針對一些需要遍歷一個數組,同時使用廣義動態規劃(即至少有一個狹義動態規劃條件不滿足)的方法中,如何不使用遞歸,並且只用O(n)時間遍歷數組

原创 從 LeetCode 279 實踐動態規劃

Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum

原创 針對矩陣的一類動態規劃處理

  LeetCode動態規劃題目中遇到兩道矩陣題,一個是尋找子矩陣,一個是計算某個子矩陣的和。這裏介紹一下他們的處理方法,記錄思考。 尋找子矩陣   LeetCode 221 Maximal Square Given a 2D

原创 延展問題=基本問題+特殊情況(延展問題=基本問題 分情況討論)

  對於一些在原問題基礎上增加了一些條件,進而延展一個新問題的題目,往往可以視爲基本問題加上特殊情況的處理。   先回顧一下之前有一篇博文提到的搶劫問題,是對一條線上的房子進行搶劫。       LeetCode 198題

原创 01揹包問題的擴展——二維費用 LeetCode 474

  上一講的01揹包問題是最基礎的揹包問題,只有一維費用變量。這一講接觸到二維費用變量。其實相對之前,只是多了一維而已,所以狀態轉移公式有所變化,如下:   f[i][v][u]=max{f[i-1][v][u],f[i-1][

原创 實際問題的算法抽象——動態規劃中的01揹包問題

  LeetCode的許多題目都不會明確告訴你用哪一類算法進行求解,甚至可能都無須用複雜算法。然而能明確用哪一類算法解決問題,將對問題的解決提供事半功倍的效果。當然有些題目即使告訴你用哪一類算法,然而如何將該問題抽象成一個數學算法

原创 多因子排序

 當需要對多因子進行排序時,可以構造下面這樣的包裝類,對List<YourObject>進行排序,假設排序因子都是Double類型的。如有其他需要,也可使用泛型。 /** * 用於多因子優先級排序 * 要求List<YourObje

原创 AOP監聽Http接口報錯:getInputStream() has already been called for this request

使用AOP監聽Http接口時出現以下問題: 排查順序: 看錯誤棧第一行,發現看不出什麼,繼續往下看,找到與自己相關的第12行,對應出錯在(HttpMonitor.java:59) 找到對應的當時的代碼,發現問題出在何處。此時由於是回滾之

原创 靜態代理、動態代理、CGLIB

代理 目的:擴展被代理對象的功能。 參考: https://blog.csdn.net/briblue/article/details/73928350 https://www.jianshu.com/p/6f6bb2f0ece9 例如動

原创 緩存

1. 主動寫緩存與被動寫緩存 相對來說,被動寫緩存對緩存一致性的保障更好。 一般緩存一致性保障方法: 補償機制 定期全量或增量build 失效機制 2. 自定義註解實現緩存 由三部分組成,可參考 https://www.jianshu.

原创 遞歸轉非遞歸的棧方法

尾遞歸   定義:某個方法在其最後調用自身進行遞歸,並且這個遞歸調用一定是該方法做的最後一件事。當需要返回值時是return f(n),沒有返回就直接是f(n)。   誤區:這個f(n)外不能加其他東西,因爲這就不是最後一件事了。比如如

原创 有向圖是否有環 BFS 和 DFS

  LeetCode 207. Course Schedule There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses

原创 雙指針 子字符串問題

  LeetCode 76. Minimum Window Substring Given a string S and a string T, find the minimum window in S which will conta

原创 降低時間複雜度的幾種方法【持續更新】

降低時間複雜度的幾種方法【持續更新】   LeetCode的許多題目都對時間複雜度有相應的要求,大家在刷題時遇到一道題可能有自己的解決方法,也確實可行,然而時間複雜度達不到要求也無法通過。這裏給大家持續總結LeetCode中遇到的那些降低

原创 自定義註解+實現類+AOP

以自定義註解實現緩存爲例: 在方法上添加註解,即可將方法名和入參(爲key)、返回值(爲value),存入緩存cache。 1. 自定義註解 定義註解中需要獲取的自定義參數,以提供給實現類調用。 2. 緩存實現類 實現緩存相關的增刪改查