原创 【LeetCode4】尋找兩個有序數組的中位數

思路1:將兩個數組按照索引i與索引j切分爲左右兩個部分,左半部分與右半部分的元素數量相同,並且尋找到左半部分最大值小於右半部分最小值的位置,中位數就在附近,具體的根據總長度是偶數/奇數確定。尋找索引的過程爲二分。時間複雜度爲O(logm

原创 回溯總結-慚愧慚愧

關於回溯有一個很好的文章 【https://leetcode-cn.com/problems/subsets/solution/xiang-xi-jie-shao-di-gui-hui-su-de-tao-lu-by-reedf/

原创 【LeetCode 461】漢明距離

思路:簡單題目,一筆帶過。異或然後循環數1的數量。 ps. Integer有一個方法直接統計bit爲1的數量,Integer.bitCount(); public int hammingDistance(int x, int

原创 【LeetCode 22】括號生成

深搜+剪枝的兩種解法: 1. 記錄左括號與右括號的剩餘數量,每次選擇向路徑中加入左括號或右括號,當某一種括號剩餘量爲0,對可能的結果使用棧檢查合法性。 效率比較低下,因爲檢查的過程耗費時間。 public List<Strin

原创 【LeetCode 64】 最小路徑和

思路: 1. 簡單遞歸,時間複雜度較高,因爲會重複計算。 public int minPathSum(int[][] grid) { int n=grid.length; int m=grid[

原创 【LeetCode10】正則表達式匹配

思路:列出所有的分支情況,然後編寫: (1)S結束,P經過處理(末尾如果剩下類似a*b*直接處理掉)也結束,true; (2)S結束,P經過處理沒有結束,false; (3)S未結束,P結束,false; (4)S未結束,P未結束:  

原创 HashMap的resize()過程簡述版本

初始默認大小爲16,默認負載閾值0.75;每次擴容2倍;   1. 如果oldCap已經超出最大容量。 將Integer.MAX_VALUE賦給閾值,返回舊錶;   2. 如果oldCap以及oldCap*2是介於16和最大容量之間(多落

原创 經典的GC收集器組合

常用的組合爲: (1)Serial+Serial Old實現單線程的低延遲垃圾回收機制; (2)ParNew+CMS,實現多線程的低延遲垃圾回收機制; (3)Parallel Scavenge和Parallel Scavenge Old,

原创 【LeetCode647】迴文子串

思路:採用動態規劃或中心擴展方法都可以,【LeetCode5】已經使用了中心擴展法,這裏採用動態規劃。設置矩陣f,f[i][j]表示字符串中下標從i到j的子串是否爲迴文,獲得f之後,只需要遍歷二維矩陣統計value爲true的元素。動態

原创 【LeetCode】3無重複字符的最長子串

思路:使用雙向隊列。遍歷字符串,如果隊列不包含當前字符,則將該字符添加到隊列末尾;如果隊列已經包含了當前字符,首先記錄當前隊列長度,然後將隊列該字符之前的所有字符全部彈出,然後將當前字符添加到隊列末尾,維持隊列不出現重複的字符。

原创 【LeetCode 96】不同的二叉搜索樹

思路:動態規劃。 依次選擇每一個元素作爲根結點,假如選擇第i個元素作爲根結點,樹的可能數量=(i-1)個元素構成左側搜索樹的數量*(n-i)個元素構成的右側搜索樹的數量。因爲二叉搜索樹的構成僅與元素的大小有關係,所以{1,2,3}與{4

原创 【LeetCode 78】子集

第一種:回溯解法 public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> answer=new ArrayList<>();

原创 【LeetCode19】刪除鏈表的倒數第N個節點

思路:雙指針,搞定。 注意:需要判斷幾種特殊情況,主要考察細節。詳見代碼。 public ListNode removeNthFromEnd(ListNode head, int n) { if(head==n

原创 JVM初始大小和最大堆大小

可以用命令直接查詢: java -XX:+PrintFlagsFinal -version | grep HeapSize 或者使用java代碼: ​Runtime.getRuntime().maxMemory(); 官方文檔:(建

原创 【LeetCode 148】 排序鏈表

題目要求:在O(nlogn)的時間複雜度與常數空間複雜度對鏈表排序。 思路:歸併排序。 相關問題:如何快速確定鏈表的中間結點。 public ListNode sortList(ListNode head) {