1.淘寶網(www.taobao.com)與阿里巴巴網(www.alibaba.com)是阿里巴巴集團下的兩個獨立站點,若是淘寶網天天的獨立訪客數在億以上(以IP計),阿里巴巴網天天的獨立訪客數在千萬以上(以IP計)。這兩個站點有各自的瀏覽日誌。記錄了訪客在本站點上的瀏覽記錄。如IP、訪問時間、訪問頁面的URL等(注:一個IP在某天可能訪問多個頁面);現有這兩個站點某天的瀏覽日誌文件各一份。要計算在該天既訪問過淘寶網又訪問過阿里巴巴站點的獨立訪客數大約是多少。請給出你能想到的方案(可多個)。算法
關於海量數據處理問題。July在這篇博文進行很是好的總結:http://blog.csdn.net/v_july_v/article/details/6279498數組
而這個問題相似上面網址提到第五個問題。數據結構
2.給定一個query和一個text,均由小寫字母組成。函數
要求在text中找出以相同的順序連續出現在query中的最長連續字母序列的長度。優化
好比, query爲「acbac」,text爲「acaccbabb」。那麼text中的「cba」爲最長的連續出現在query中的字母序列,所以,返回結果應該爲其長度3。請注意程序效率。spa
這道題目最簡單的實現就是進行動態規劃。.net
算法思想:日誌
3.寫一個函數,輸入一個二叉樹。樹中每個節點存放了一個整數值,函數返回這棵二叉樹中相差最大的兩個節點間的差值絕對值。請注意程序效率。code
數據結構定義:blog
typedef struct BSTreeNode{ int num; BSTreeNode* leftChild; BSTreeNode* rightChild; }*TreeNode;
個人思路是:非遞歸的中序遍歷樹,記錄最大最小值,返回兩個節點間最大差值。
//非遞歸的中序遍歷,經過遍歷數組。用Max記錄最大值,用Min記錄最小值,求得二者差值 void inorderTraverse(TreeNode root) { stack<TreeNode>sta; TreeNode p=root; int Max = -2147483648 ; int Min = 2147483647; while (p||sta.size()) { if (p) { sta.push(p); p=p->leftChild; } else { p=sta.top(); // 更新最大最小值 if(p->num>Max){ Max = p->num; } if(p->num<Min){ Min = p->num; } cout<<p->num<<" "; sta.pop(); p=p->rightChild; } } cout<<"輸出相差最大兩個結點差值:"<<Max-Min<<endl; }
歡迎你們提供上面題目的思路,感謝!