2015阿里巴巴秋招線上筆試經驗
2015阿里秋招線上筆試附加題-資料研製工程師
20個挑選,有好多行測題,老長一個,讀都讀暈了。好像好記的幾個專業題。
1.給出二叉樹的先序遍歷為ACDEFHGB,中序遍歷DECAHFBG。求後序遍歷。
答案:EDCHBGFA
2.甲,乙玩硬幣遊戲,分出輸贏時中止,呈現第一次為正面第2次為不和時甲勝,呈現接連兩次不和時乙勝,求甲勝的機率。
答:假定用A,B表明正反兩面。前兩次拋硬幣也許為AA,AB,BA,BB。機率為1/4,為AB時甲勝,為BB時乙勝。呈現AA或BA時持續第三次拋,第三次也許為A或B,機率都為1/2。此刻前面兩種狀況第2次呈現的都是A,機率為1/2,故第2次和第三次為AB時甲勝,為AA時持續拋硬幣。。。此後甲勝概率都為1/2,今後乙都不也許勝,故乙只能是前兩次呈現BB的時分勝,機率為1/4,所以甲勝的機率為1-1/4=3/4。
3.兩趟公家車10分鐘一趟,第一輛分鐘為2時發車,第二輛分鐘為8時發車,求小命上第一輛車的機率。
4.鷹戰略和鴿子戰略
。。。。。。
附加題
第一題:這個即是求最長公共子串。
標題:給定一個query和一個text,均由小寫字母構成。要求在text中找出以相同的順序接連呈現在query中的最長接連字母序列的長度。例如,query為"acbac",text為"acaccbabb",那麼text中的"cba"為最長的聯絡呈現在query中的字母序列,因而,返回成果應該為其長度3。請注意程式功率。
#include
#include
#include
using namespace std;
int LCS(const string &str1,const string &str2)
{
int xlen=str1.size(); //橫向長度
vector tmp(xlen); //保留矩陣的上一行
vector arr(tmp); //當前行
int ylen=str2.size(); //縱向長度
int maxele=0; //矩陣元素中的最大值
int pos=0; //矩陣元素最大值呈現在第幾列
for(int i=0;i
string s=str2.substr(i,1);
arr.assign(xlen,0); //陣列清0
for(int j=0;j
if(str1.compare(j,1,s)==0){
if(j==0)
arr[j]=1;
else
arr[j]=tmp[j-1]+1;
if(arr[j]>maxele){
maxele=arr[j];
pos=j;
}
}
}
tmp.assign(arr.begin(),arr.end());
}
return maxele;
}
int main()
{
string query;
string text;
cin>>query>>text;
cout<
return 0;
}
第二題:這個標題我感受有歧義,是求結點間隔最大的兩結點的差值還是指求樹中結點最大最小的差值呢?我提交的是最大最小的差值。
標題:寫一個函式,輸入一個二叉樹,樹中每個節點存放了一個整數值,函式返回這棵二叉樹中相差最大的兩個節點間的'差值絕對值。請注意程式功率。
struct TreeNode
{
int data;
TreeNode *pLeft;
TreeNode *pRight;
int nMaxLeft;
int nMaxRight;
};
int max=INT_MIN;
int min=INT_MAX;
int getMax(TreeNode *pRoot)
{
if (pRoot!=NULL)
{
if (pRoot->data>max)
{
max=pRoot->data;
}
if (pRoot->data
{
min=pRoot->data;
}
getMax(pRoot->pLeft);
getMax(pRoot->pRight);
}
return max-min;
}
第三題:我的主意是一個IP對應一個獨立客戶。因而首先找出這兩個網站的IP,IP呈現屢次只留一個,然後再求出這兩個網站共有的IP數即是所求答案。
標題:淘寶網(www.taobao.com)與阿里巴巴網(www.alibaba.com)是阿里巴巴集團下的兩個獨立網站,假定淘寶網天天的獨立訪客數載億以上(以IP計),阿里巴巴網天天的獨立訪客數在千萬以上(以IP計);這兩個網站有各自的閱讀日誌,記載了訪客在本網站上的閱讀記載,如IP、拜訪時間、拜訪頁面的URL等(注:一個IP在某天也許拜訪多個頁面);現有這兩個網站某天的閱讀日誌檔案各一份,要計算在該天既拜訪過淘寶網又拜訪過阿里巴巴網站的獨立訪客數大概是多少,請給出你能想到的計劃(可多個)。