hulu笔试
?
1417.?稱重問題
將金幣盡量分成均勻三堆。如果正好平分就正常操作,余一個就是(3k,3k)上秤,但是最壞的情況是要找的金幣在3k+1里,余兩個就是(3k+1,3k+1)上秤,最壞的情況還是在3k+1里。
1003.?二叉樹剪枝
類似后序遍歷,先處理左右子樹,如果有全0的直接設置成NULL,不需要從根節點向下多次判斷,也不用特意返回其他flag。
1559.?取數求和
注意有可能溢出,還要在每一個可能超過1000000007的地方取余。
997.?打印組織結構圖?
class people { public:string ups;string title;string year;vector<string> downs;//自定義構造函數必須記得同時定義默認無參構造函數people(){ups="";title="";year="";vector<string> tmp;downs=tmp;}people(string _ups, string _title, string _year, vector<string> _downs):ups(_ups),title(_title),year(_year),downs(_downs) {} }; class Solution { public:void DFShelper(string p, int level, vector<string> &res, map<string,people> &nodes) {string tmp="";for (int k=0;k<level;k++) tmp=tmp+"-";tmp=tmp+p;tmp=tmp+" (";tmp=tmp+nodes[p].title;tmp=tmp+") ";tmp=tmp+nodes[p].year;res.push_back(tmp);//孩子節點還要排序sort(nodes[p].downs.begin(),nodes[p].downs.end());for (int i=0;i<nodes[p].downs.size(); i++) {DFShelper(nodes[p].downs[i],level+1,res,nodes);}}vector<string> getOrganization(vector<vector<string>> &relationship) {// Write your code heremap<string,people> nodes;string leader="";//先創建節點for (int i=0;i<relationship.size();i++) {vector<string> tmp;people p=people(relationship[i][1],relationship[i][2],relationship[i][3],tmp);nodes[relationship[i][0]]=p;//找到根節點if (relationship[i][1]=="NULL") leader=relationship[i][0];}//for (int i=0;i<relationship.size();i++) {string up=relationship[i][1];nodes[up].downs.push_back(relationship[i][0]);}vector<string> res;int level=0;//看題目要用深搜DFShelper(leader,level,res,nodes);return res;} };996.?最大斜率直線
如果暴力求解會超時。可以考慮,如果所有點按x軸坐標大小排序,最大斜率的點一定是相鄰的兩個點。假設對于x,y,z三個點,如果xz的斜率大于xy的斜率,那么yz斜率一定大于xz斜率。所以先排序就好。
?
總結
- 上一篇: 以往WiFi的最大痛点,终于被WiFi
- 下一篇: 【ROS入门21讲】Client客户端的