原创 紅黑樹的刪除之3(共四篇)

  紅黑樹的刪除操作是紅黑樹最複雜的操作了,只要搞明白這個,基本上就明白紅黑樹的調整。刪除的情況大致可以分爲四種。 case 1. .刪除節點z,,子節點少於兩個時,左兒子爲T.NIL,用右兒子代替z case 2. 刪除節點z,子節點少

原创 紅黑樹的基本性質(共四篇)

1.什麼是紅黑樹   我們知道一棵高度爲h的二叉搜索樹的大部分操作時間複雜度是O(h),但是如果搜索樹較高,極端情況下就是一條鏈表了,二叉搜索的意義就不大了。而紅黑樹是一顆二叉搜索樹,也是多種平衡搜索樹的一種,可以保證最壞情況下時間複雜度

原创 紅黑樹的插入2(共四篇)

  紅黑樹的插入的時間複雜度是O(lgn),插入操作和普通的二叉搜索樹幾乎一模一樣,不同點是在插入後需要看看紅黑樹的五大性質是否被破壞了,如果被破壞了,那就需要調整了。下面先來看看紅黑樹插入操作的代碼,其實插入操作很簡單,假如要插入的節點

原创 JDK8 HashMap的實現之4(共四篇)

1. put的實現   public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } final V p

原创 最大平均值子數組

最大平均值子數組   描述 筆記  數據  評測 給出一個整數數組,有正有負。找到這樣一個子數組,他的長度大於等於 k,且平均值最大。  注意事項 保證數組的大小 >= k 您在真實的面試中是否遇到過這個題

原创 必須要把紅黑樹講清楚,看完還不明白請直接找我之4(共四篇)—JDK8 HashMap的實現

1. put的實現 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } final V put

原创 [LeetCode] 4Sum 四數之和解法(本算法n數之和都能解)

四數之和  給一個包含n個數的整數數組S,在S中找到所有使得和爲給定整數target的四元組(a, b, c, d)。  注意事項 四元組(a, b, c, d)中,需要滿足a <= b <= c <= d 答案中不可以包

原创 必須要把紅黑樹講清楚,看完還不明白請直接找我之2(共四篇)—紅黑樹的插入

  紅黑樹的插入的時間複雜度是O(lgn),插入操作和普通的二叉搜索樹幾乎一模一樣,不同點是在插入後需要看看紅黑樹的五大性質是否被破壞了,如果被破壞了,那就需要調整了。下面先來看看紅黑樹插入操作的代碼,其實插入操作很簡單,假如要插入的節點

原创 必須要把紅黑樹講清楚,看完還不明白請直接找我之1(共四篇)——紅黑樹的基本性質

1.什麼是紅黑樹   我們知道一棵高度爲h的二叉搜索樹的大部分操作時間複雜度是O(h),但是如果搜索樹較高,極端情況下就是一條鏈表了,二叉搜索的意義就不大了。而紅黑樹是一顆二叉搜索樹,也是多種平衡搜索樹的一種,可以保證最壞情況下時間複雜度

原创 實現dup2功能相同的函數

自行實現dup2的功能。函數原型:int mydup2(int fd, int fd2),思路如下: 1.fd2小於0,直接返回錯誤; 2.如果fd是有效的文件描述符且等於fd2,直接返回fd2; 3.如果fd2已經打開,關閉fd2; 4

原创 redis skiplist實現

一、背景       redis中有序集合是通過跳躍表實現的,如ZADD、ZRANK等等操作。跳躍表的平均時間複雜度是O(logn),最壞情況時間複雜度是O(n),空間複雜度爲O(n)。非常適用於有序集合的查詢、插入,在性能接近平衡樹的同

原创 從自定義排序深入理解單機hadoop執行mapreduce過程

我們對數據進行處理的過程中,最常見的一種操作是排序和統計,特別是在數據量大的場景,實現高效的排序是業務系統開發過程中非常重要的一塊。如何從hadoop中高效地提取有用的數據是工作中重要的一環。在自定義排序類的過程中,就遇到了一個小問題,而