前言:該篇用于記錄自看。曾回看昨天的做題代碼,竟然會覺得陌生,這竟然是我寫的,細細讀了一下,原來我當時是這么想的。因此我覺得記代碼沒有實際用處,重點是領悟了思想,這樣子代碼就在心中,隨時可以再寫出來。因此我的筆記不記錄代碼,只記錄一些關鍵思想突破點。
第一題:數字統計
?
對于數x
x%10得到個位
x/10 得到去掉個位,剩下的數
再綜合上遞歸思想
第二題:兩個數組的交集
?第一次解題:
第一次做的時候通過暴力解法套兩個循環解出來了
優化:
運用哈希表的知識
復習:哈希表的核心思想是通過將關鍵字映射到表中一個位置來快速定位記錄,以加快查找的速度。具體來說,哈希表利用哈希函數將關鍵字映射到一個地址,這個地址通常稱為哈希地址或哈希值。通過這個地址,可以直接訪問到所需的數據,而不需要進行大量的比較操作,從而實現常數時間復雜度的平均查找時間。
解題思想:
那在這道題中,因為nums1、2的范圍[1,1000],直接用數組的下標映射。
細節1:
boolean[] a = new boolean[1020];?和 Boolean[] a = new Boolean[1020]的區別:
boolean[]?默認初始化為 false。Boolean[]?默認初始化為 null。
使用 boolean[]?時,考慮存儲大量基本布爾值,且希望使用內存更加高效。
使用 Boolean[]?時,需要考慮可能存儲 null?值或使用 Boolean?的其他特性。
因此這道題要用boolean,避免空指針異常。
細節2:
if語句里若不小心寫成= 賦值,也不會報錯。代碼跑不過時,可檢查這里。
第三題:點擊消除?
?
【相鄰兩個相同的字母】->用棧解決;不用到棧思想的方法基本都會超時;
初始解法:我的代碼是用到Stack類直接初始化一個棧;
優化:用StringBuilder模擬一個棧,利用了StringBuilder的可變性,增減元素時,長度也會相應改變。具體實現:append增加字符模擬入棧,deleteCharAt模擬出棧。
?