原创 【LeetCode】237-刪除鏈表中的節點

刪除鏈表中的節點 題目 請編寫一個函數,使其可以刪除某個鏈表中給定的(非末尾)節點,你將只被給定要求被刪除的節點。 示例 1: 輸入: head = [4,5,1,9], node = 5 輸出: [4,1,9] 解釋: 給定你

原创 【LeetCode】141-環形鏈表

環形鏈表 題目 給定一個鏈表,判斷鏈表中是否有環。 爲了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在該鏈表中沒有環。 示例 1: 輸入:head =

原创 【LeetCode】232-用棧實現隊列

用棧實現隊列 題目 使用棧實現隊列的下列操作: push(x) – 將一個元素放入隊列的尾部。 pop() – 從隊列首部移除元素。 peek() – 返回隊列首部的元素。 empty() – 返回隊列是否爲空。 示例: MyQ

原创 【LeetCode】160-相交鏈表

相交鏈表 題目 編寫一個程序,找到兩個單鏈表相交的起始節點。 示例 1: 輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, s

原创 【LeetCode】206-反轉鏈表(圖解說明)

反轉一個單鏈表 題目 反轉一個單鏈表。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 進階: 你可以迭代或遞歸地反轉鏈表。你能否用兩種方法解決這道題? 解法1:迭代法

原创 【LeetCode】912-排序數組

排序數組 題目 給你一個整數數組 nums,請你將該數組升序排列。 示例 1: 輸入:nums = [5,2,3,1] 輸出:[1,2,3,5] 示例 2 輸入:nums = [5,1,1,2,0,0] 輸出:[0,0,1,1,

原创 【LeetCode】104-二叉樹的最大深度

二叉樹的最大深度 題目 給定一個二叉樹,找出其最大深度。 二叉樹的深度爲根節點到最遠葉子節點的最長路徑上的節點數。 說明: 葉子節點是指沒有子節點的節點。 示例: 給定二叉樹 [3,9,20,null,null,15,7](示例

原创 【LeetCode】101-對稱二叉樹

對稱二叉樹 題目 給定一個二叉樹,檢查它是否是鏡像對稱的。 例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的,但是這個 [1,2,2,null,3,null,3] 則不是鏡像對稱的。(示例圖已省略,可點擊頂部標題查看原題)

原创 【LeetCode】21-合併兩個有序鏈表

合併兩個有序鏈表 題目 將兩個有序鏈表合併爲一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 解法1:迭代法

原创 【LeetCode】142-環形鏈表II(含推理過程)

環形鏈表II 題目 給定一個鏈表,返回鏈表開始入環的第一個節點。 如果鏈表無環,則返回 null。 爲了表示給定鏈表中的環,我們使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。 如果 pos 是 -1,則在

原创 詳解 HashMap 中的 hash 函數

閱讀本文大概需要16分鐘。 1. 什麼是 hash 函數 hash 函數,即散列函數,或叫哈希函數。它可以將不定長的輸入,通過散列算法轉換成一個定長的輸出,這個輸出就是散列值。需要注意的是,不同的輸入通過散列函數,也可能會得到同一

原创 20180704-如果你已將某個類的實例序列化到磁盤,這時候再往這個類添加新的屬性,那麼反序列化該對象時會發生什麼?

只要在類中定義了SerializableUID,在類中新增屬性不會導致序列化失敗,新增的字段在反序列化時失敗,新增的字段將被初始化爲初始值,如String將被初始化爲null,int將被初始化0。