原创 最小的K個數

題目描述 輸入n個整數,找出其中最小的K個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。 分析:這個題有很多中做法,我採用的是基於冒泡排序的做法,複雜度是O(n*k),如果全排序,複雜度是O

原创 二叉樹的深度

題目描述 輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 分析:可以用遞歸,也可以用非遞歸,有兩種想法,一種是深度優先遍歷,用遞歸就可以,還有一種是層序遍歷,用

原创 左旋轉字符串

題目描述 彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=”abcXYZdef”,要求輸出循環左移3

原创 第一個只出現一次的字符

題目描述 在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置 分析:思路很簡單,遍歷第一遍存在每個字符出現的次數,第二遍找到第一個出現次數爲一的字符,關鍵就看用什麼結構存,可以自

原创 和爲S的連續正數序列

題目描述 小明很喜歡數學,有一天他在做數學作業時,要求計算出9~16的和,他馬上就寫出了正確答案是100。但是他並不滿足於此,他在想究竟有多少種連續的正數序列的和爲100(至少包括兩個數)。沒多久,他就得到另一組連續正數和爲100

原创 數組中的逆序對

題目描述 在數組中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 輸入描述: 題目

原创 數字在排序數組中出現的次數

題目描述 統計一個數字在排序數組中出現的次數。 分析:這個題目並沒有說是升序的數組,但所有的解法都是默認升序的,這就有點坑了,默認升序的話會少很多麻煩。然後這道題有挺多思想的,最暴力的就是直接遍歷,複雜度O(n),然後就是利用STL中

原创 平衡二叉樹

題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。 分析:平衡二叉樹的左右子樹都是平衡二叉樹,平衡二叉樹的左右子樹高度差不超過1。最直接的想法就是遞歸調用算出來每一個子樹的高度然後作差去比,但是那樣的話會重複訪問很多次結點,所以

原创 把二叉樹打印成多行

題目描述 從上到下按層打印二叉樹,同一層結點從左至右輸出。每一層輸出一行。 思路:要麼就用兩個棧,第一個棧存一層,然後依次取出第一個棧的結點,把他們的左右子結點放到第二個棧裏,直到第一個棧清空,然後交替。第二種思路就是用一個隊列,然後記錄

原创 不用加減乘除做加法

題目描述 寫一個函數,求兩個整數之和,要求在函數體內不得使用+、-、*、/四則運算符號。 分析:兩個數相加不讓用加減乘除,那肯定就是位運算了啊,用位運算模擬加法挺簡單的,如果有快速冪的基礎的話很容易能想到,按位異或然後按位與左移一位,

原创 CentOS 配置多網卡及簡單路由設置

CentOS6中關於網絡配置的命令有很多,本文將介紹幾個平時最長用的幾個命令,以及網卡IP地址的配置和簡單路由配置。 1、經常使用的查看IP地址命令爲 ifconfig,不跟參數的情況下默認查看所有已啓用的網卡信息,如下圖所示: 如

原创 Linux 下後臺運行程序,查看和關閉後臺運行程序

1、運行.sh文件 直接用./sh 文件就可以運行,但是如果想後臺運行,即使關閉當前的終端也可以運行的話,需要nohup命令和&命令。 (1)&命令           功能:加在一個命令的最後,可以把這個命令放在後臺執行 (2)nohu

原创 構建乘積數組

題目描述 給定一個數組A[0,1,...,n-1],請構建一個數組B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 分析:把B中的每個元

原创 按之字形順序打印二叉樹

題目描述 請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。 思路:用兩個棧,奇數層從左到右,入棧1,先左子結點後右子結點,偶數層從右到左,入棧

原创 對稱的二叉樹

題目描述 請實現一個函數,用來判斷一顆二叉樹是不是對稱的。注意,如果一個二叉樹同此二叉樹的鏡像是同樣的,定義其爲對稱的。 思路:有兩種方法,一種就是遞歸,思路簡單,代碼也短。另一種就是利用層序遍歷,成對入棧成對出棧。 代碼: /* str