原创 二叉樹的右視圖

題目大意:給定一顆二叉樹,求該二叉樹的右視圖,即從右往左看,求能看到的二叉樹的結點,比如[1,2,3]看到的是1,3。 思路: 1)這道題挺有意思,首先得明確,題目的隱含意思就是要求二叉樹的每一層的最後一個結點(從左到右)。 2)既然二叉

原创 遞歸反轉字符串

搞一個簡單一點、但也挺有趣的題目:給定一字符串,利用遞歸的方法輸出其反轉字符串。 首先,遞歸反轉字符串,每條字符串的反轉對象都等於其最後一個字符所形成的字符串對象拼接上最後一個字符串之前的所有字符所形成的反轉對象。 Java代碼1 pu

原创 MySQL索引背後的數據結構及算法原理

講關於MySQL索引的一篇很好的文章,轉載過來分享一下。 原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL數據庫爲研究

原创 Longest Consecutive Sequence

給定一個整形數組,求數組中最長的連續串的長度。如果數組是[5,7,9,1,1,2,3,3],結果爲3。 解題思路: 1. 利用hashMap對數組每個元素進行散列。 2. 對於數組的某個元素num1,在hashMap中向前、向後求其相

原创 Rotate List(鏈表旋轉)

這是一道來自Leetcode的題目,如下所示。其中,K可以大於鏈表的長度,如果大於鏈表的長度,則旋轉的大小就是 size % K。 思路: 1)遍歷鏈表,求出鏈表長度size,並得到指向鏈表末尾結點的指針end; 2)設置兩個指針pH

原创 並行處理海量數據實驗

以前看到過一個題目,說設計算法,要求在10億個數的數據流中找出最小的10個數 我想到有兩種算法,第一種利用大根堆找出最小的10個數,第二種方法是第一種的改進,利用多線程實現並行計算,將計算任務分爲若干個,之後再將結果進行合併。 實驗一

原创 排序數組構造AVL樹

題目大意:假設排序數組中沒有重複的元素,利用數組的元素構建一顆平衡二叉樹。 思路分析:如果直接構造一顆平衡二叉樹,代碼量會比較大,而且也不容易實現。注意題目的意思,是利用排序數組來構建平衡二叉樹。所以,需要好好利用排序的特點。再來看看,一

原创 Java中volatile關鍵字的含義

文章出處:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 在java線程併發處理中,有一個關鍵字volatile的使用目前存在很大的混淆,以爲使用這個

原创 DNS對域名的解析過程

先說一下DNS的幾個基本概念: 一. 根域 就是所謂的“.”,其實我們的網址www.baidu.com在配置當中應該是www.baidu.com.(最後有一點),一般我們在瀏覽器裏輸入時會省略後面的點,而這也已經成爲了習慣。

原创 二叉樹的深度

求二叉樹深度是一個基本的算法,解決的思路如下: 1. 根據二叉樹的非遞歸遍歷,設置兩個記錄變量“觀察”棧的深度變化:real_depth是棧真正的深度,cur_depth是當前棧的深度。對每個節點進行遍歷,如果cur_depth大於rea

原创 Median of Two Sorted Arrays

題目要求是求出兩個已排序的數組的中位數,如果兩個數組的總的個數爲偶數,則返回中間兩個數字的平均數。 思路: 解題思路就是根據歸併排序的思想,利用歸併排序中合併兩個已排序數組的方法。聲明count變量,在兩個數組中沒選出一個數的時候,cou