目錄
058 鏈表 e10 判環算法1
thinking:什么是空指針?
058 鏈表 e10 判環算法2
059 數組 e01 合并有序數組1
059 數組 e01 合并有序數組2
060 隊列 鏈表實現1
061 隊列 鏈表實現2
062 隊列 環形數組實現 方法1-1
063 隊列 環形數組實現 方法1-2
064 隊列 環形數組實現 方法2
065 隊列 環形數組實現 方法3-1
066 隊列 環形數組實現 方法3-2
067 隊列 環形數組實現 方法3-3
068 隊列 環形數組實現 方法3-4
069 隊列 e01 二叉樹層序遍歷1
069 隊列 e01 二叉樹層序遍歷2
058 鏈表 e10 判環算法1
重點理解最后的結合部分:兔子充當烏龜,再走a步,就可以來到環入口。而起點到入口又剛好是a步?
thinking:什么是空指針?
解析Java空指針異常:原因、避免和處理-CSDN博客
因此,這里要加上h.next != null ,因為如果h.next 是null,那h.next.next 就相當于對null執行操作,就會出現空指針異常。
058 鏈表 e10 判環算法2
?
如果環是起點終點都重合的一個閉合大環,就會出現bug,因此,調整一下代碼順序,先判斷烏龜和兔子相遇的時候在不在同一位置,如果在同一位置,說明是閉合大環,說明他們此時此刻的位置就是環的入口,直接返回就好,就不要都各再走一步了。
059 數組 e01 合并有序數組1
?
059 數組 e01 合并有序數組2
?
060 隊列 鏈表實現1
061 隊列 鏈表實現2
如果調用了有參構造,就以指定的容量為準;如果沒有調用,那就沒有限制,因為我們一開始設置了Integer.MAX_VALUE?
?
?做了以上改動
?
062 隊列 環形數組實現 方法1-1
判斷空:首尾指針指著一個東西
063 隊列 環形數組實現 方法1-2
移動指針,意思是控制最后操作的數組范圍是什么。?因為不是整一個圓圈都是有效的數組范圍。
064 隊列 環形數組實現 方法2
原先的判斷滿還是空的方法,需要留0給尾指針。但是現在判斷是滿是空就不用了,因為引用了size這個變量。?
065 隊列 環形數組實現 方法3-1
?
左邊是新方法,右邊是舊方法。
左邊:tail不是索引,索引是通過tail計算出來的
右邊:tail本身是索引,但后面要馬上計算下一個索引的位置
?
066 隊列 環形數組實現 方法3-2
將Integer轉換成Long型,就可以避免head非常大時候,由正數轉換成負數,然后出現bug的現象。
067 隊列 環形數組實現 方法3-3
理解:移動后的 1101 就是商,那移沒的就是余數,也就是111?
?
可以避免head非常大時候,由正數轉換成負數,然后出現bug的現象。這樣就可以解決取模運算的性能問題以及符號的問題
雖然tail超過了范圍,但是它與其他東西的運算結果沒有超過范圍就可以了。
而且 數組的最大長度也這個值,數組的尾部減去數組的頭部是不可能超過數組的最大長度的。
068 隊列 環形數組實現 方法3-4
將非2的n次方數轉化為2的n次方
如果給的不是2的n次方,就可以采用這樣的方法。
方法一
?方法二
?
方法三
069 隊列 e01 二叉樹層序遍歷1
打印出來,再看看有沒有孩子,有就放進去【】里面。?
069 隊列 e01 二叉樹層序遍歷2
想要產生空格,出來的效果像一棵樹一樣的話,就需要控制它什么時候換行,問題轉化成,這一層的節點數有多少個,我要循環多少次才要換行。?