原创 JVM類加載機制學習筆記

一、類的生命週期 加載(Loading)->驗證(Verification)->準備(Preparation)->解析(Resolution)->初始化(Initialization)->使用(Using)->卸載(Unloadi

原创 JVM自動內存管理機制學習筆記

JVM對Java運行時數據區的劃分: 程序計數器(線程私有) 可以看作是當前線程所執行的字節碼的行號指示器。 Java虛擬機棧(線程私有) 描述Java方法執行的內存模型:每個方法在執行的同時都會創建一個棧幀用於存儲局部變

原创 5.3去掉字符串中連續出現k個0的子串

題目 給定一個字符串str和一個整數k,如果str中正好有連續的k個‘0’字符出現時,把k個連續的‘0’字符去除,返回處理後的字符串。 代碼實現 public String removeKZeros(String st

原创 2.7判斷一個鏈表是否爲迴文結構

題目 給定一個鏈表的頭節點head,請判斷該鏈表是否爲迴文結構。 代碼實現 public class IsPalindrome { //需要O(N)額外空間 public boolean isPalindrom

原创 8.9最長的可整合子數組的長度

題目 可整合數組:如果一個數組在排序之後,每相鄰兩個數差的絕對值都爲1,則該數組爲可整合數組。 給定一個整型數組arr,請返回其中最大可整合子數組的長度。 代碼實現 public int getLIL(int[] arr) {

原创 5.7判斷字符數組中是否所有的字符都只出現過一次

題目 給定一個字符類型chas[],判斷chas中是否所有的字符都只出現過一次,請根據以下不同的兩種要求實現兩個函數。 代碼實現 public boolean isUnique(char[] chas) { if (c

原创 4.7最長公共子序列問題

題目 給定兩個字符串str1和str2,返回兩個字符串的最長公共子序列。 代碼實現 public class Lcse { public int[][] getdp(String str1, String str2)

原创 2.8將單向鏈表按某值劃分成左邊小、中間相等、右邊大的形式

題目 給定一個單向鏈表的頭節點head,節點的值類型是整形,再給定一個整數privot。實現一個調整鏈表的函數,將鏈表調整爲左部分都是小於privot的節點,中間部分都是值等於privot的節點,右部分都是值大於privot的節點。

原创 1.8最大值減去最小值小於或等於num的子數組數量

題目 給定數組arr和整數num,共返回有多少個子數組滿足如下情況: max(arr[i…j]) - min(arr[i…j]) <= num 代碼實現 public int getNum(int[] arr, int num)

原创 9.7蓄水池算法

題目 有一個機器按自然數序列的方式吐出球(1號球,2號球,3號球,······),你有一個袋子,袋子最多隻能裝下K個球,並且除袋子外,你沒有更多的空間。設計一種選擇方式,使得當機器吐出第N號球的時候(N>K),你袋子中的球數是K個,

原创 5.6字符串的統計字符串

題目 給定一個字符串str,返回str的統計字符串。 補充題目 給定一個字符串的統計字符串cstr,再給定一個整數index,返回cstr所代表的原始字符串上的第index個字符。 代碼實現 public class GetCou

原创 8.8在行列都排好序的矩陣中找數

題目 給定一個有N*M的整型矩陣matrix和一個整數K,matrix的每一行和每一列都是排好序的(從左到右遞增,從上到下遞增)。實現一個函數,判斷K是否在matrix中。 代碼實現 public boolean isContai

原创 4.6漢諾塔問題

題目 給定一個整數n,代表漢諾塔遊戲中從小到大放置的n個圓盤,假設開始時所有的圓盤都放在左邊的柱子上,想按照漢諾塔遊戲的要求把所有的圓盤都移到右邊的柱子上。實現函數打印最優移動軌跡。 進階題目 給定一個整型數組arr,其中只含有1、

原创 1.7生成窗口最大值數組

題目 有一個整型數組arr和一個大小爲w的窗口從數組的最左邊滑到最右邊,窗口每次向右邊劃一個位置。 如果數組長度爲n,窗口大小爲w,則一共產生n-w+1個窗口的最大值。 請實現一個函數。 輸入:整型數組arr,窗口大小爲w。 輸出

原创 9.6摺紙問題

題目 請把一段紙豎着放在桌子上,然後從紙條的下邊向上方對摺1次,壓出摺痕後展開。此時摺痕是凹下去的,即摺痕突起的方向指向紙條的背面。如果從紙條的下邊向上方連續對摺兩次,壓出摺痕後展開,此時有三條摺痕,從上到下依次是下摺痕、下摺痕和上