原创 面試雜題(三)有序數組中連續k的個數(含二分搜索的遞歸非遞歸寫法)

代碼比較簡單,用的最差效率的方法,先二分搜索,在前向後向尋找邊界index int NumofK(int *p,int nlen,int k) { int index; BinSearch(p,0,nlen-1,k,index);

原创 二叉樹(二)二叉樹的層序遍歷

二叉樹的層次遍歷是通過一個隊列來實現,先讓根節點入隊列,然後出隊列,將出隊列的值打印出來,並將這個值得左右子節點入隊列,開始的時候只要有出隊列就有兩個子節點入隊列,最後的時候到了葉子節點,就全是出隊列了; 代碼比較簡單,如下: void

原创 面試雜題(二)子數組的最大和

求一個數組中的子數組最大和,採取的是逼近的辦法,如果之前的累積量爲正,那麼這個累積量會爲下次累積做貢獻,如果爲負,那麼該累積量應該丟棄,因爲他成爲下次累積的累贅 代碼很簡單 int getMaxSum(int *p,int nlen) {

原创 面試雜題(六)替換空格

輸入:we are happy 輸出we%20are%20happy 要求是原位移動,不申請新的空間 void replaceSpace(char *pStr,int nSize) { int nLen=strlen(pStr); i

原创 tcpDump包的解封讀取(附源代碼)

前幾天因爲項目需要寫了下tcpDump包的解包程序,源文件格式Dump文件 #include <iostream> #include <fstream> #include <string> #include <vector> #inclu

原创 (雜)百度實習的一道題鏈表逆序,合併兩個有序鏈表

關於鏈表逆序,這道題都做爛了,很多公司喜歡用這道題,昨天Baidu實習招聘就考了一條這個,回來重新寫了下,這道題其實細節還是不少的,上代碼 Node *reverseLinkList(Node *pHead) { if (pHead=

原创 Spark 基礎(一)

最近一直在學習Spark,Spark 是hadoop 的改進加強版,相比於hadoop,對迭代運算支持更好,加上內存運算,某些方面速度更快。 在Spark中,將RDD作爲其中的基本運算單元,也就是以rdd爲基本數據結構,程序開發人員的操作

原创 面試題(十五)四則運算表達式

一個四則運算表達式該如何求值,比如 (2+1)*(2+3)+2*6 這裏只考慮+-*/()的形式 先把四則運算符(中綴表達式)轉換成後綴表達式,再利用棧對後綴表達式進行處理; 關鍵是如何將中綴表達式轉換成後綴表達式,規則如下: (1

原创 一個隱蔽的Bug

兩段代碼,都是插入排序的代碼 第一段: void insertSort(int *pArray,int nSize) { if (pArray==NULL||nSize<=0) { return; } for (int i=1

原创 面試這幾天

第一天a公司一天四次面試,t公司一個電話面試,a公司的四面結束,走出來已經是晚上12點了,還有小雨,打車到同學那住一晚,由於一天的連續用腦,亢奮失眠,晚上睡了4個多小時,第二天上午b公司一面,下午t公司二面,下午t公司二面的時候,對方是個

原创 二維數組中的指針+一道面試題

有 int p[3][4]; 這裏 p,p+1,p+2都是對等的 如果求(p+1-p)會是多少?答案應該是1。但是如果*(p+1)-*p,答案是4;   p是指向數組的指針,*p是指向int型的指針,如果你cout<<p,cout<<*p

原创 (雜) 一寫代碼就停不下來了。。。。

本想寫幾天代碼,複習下,爲找工作準備準備,以前喜歡的機器學習放了一段時間,現在重新撿起來吧!

原创 白話機器學習算法(二十一)logistic迴歸

我們知道最簡單的線性迴歸 y=f(x)=wx+b,表示隨着x的變化,y會隨着變化,而且是確定的,即一對一的映射,x到y的映射 現在有一組<性別,是否有鬍鬚>,我們實際上不好確定的說,男生就一定長鬍須,女生就一定不長鬍須,最好的辦法是,知道

原创 白話機器學習算法(二十二)Adaboost

Adaboost是一種弱分類器轉化爲強分類器的算法,其對於每個弱分類器賦予一個權重,最終將這些帶權弱分類器線性組合成一個強分類器。 問題就轉化爲如何獲得權值? 基本的步驟如下 Step1:爲每個樣本賦予一個權值 Step2:利用訓練數據第

原创 面試題(十)連續子數組的最大和、最大差

這個題目是個很常見的面試題,主要的解法之一是DP方法,也是最簡單的方法 這個問題的DP解答核心在於維護一個END[i],END[i]代表以pArray[i]爲結尾的子數組的最大和。 已經假定了pArray[i]是這個子數組的最後一個數字,