中望笔试不简单(1h)
1. 虚函数表是数组还是指针
2. auto 能不能作为返回类型、函数参数,auto 定义的变量一定要初始化
3. int 的基本运算符能不能重载,运算符重载能不能改变运算符的优先级
4. 考了模板的传入参数能不能为数据类型
5. 是否优先加载const类型的用户自定义类型函数参数(没看懂)
6. . $ @ 不能重载吗
7. 识别地址表示
8. delete new malloc free。malloc不会返回异常
9. 智能指针 unique 不能拷贝,weak 不会改变计数
10. 微信在接受和发送消息时进程会阻塞吗?互斥?就绪
11. 用单链表实现栈,问入栈的语句
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ // 1. 检测是否为平衡树 class Balance { // map<TreeNode*,int> h; bool is; int getHeight(TreeNode* root){ if(!is) return 0; int lh=0,rh=0; if(root->left){ lh=getHeight(root->left); // h[root->left]=lh; } if(root->right){ rh=getHeight(root->right); // h[root->right]=rh; } // h[root]=max(lh,rh)+1; if(abs(lh-rh)>1){ is=false; } return max(lh,rh)+1; } public: bool isBalance(TreeNode* root) { // write code here if(!root) return true; is=true; getHeight(root); return is; } }; // 求最大能装的单位数 83.3% // 给出 n 类箱子,给出每类箱子的个数、每类箱子一个能装多少单位 // 一共能装 truckSize 个箱子 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param boxArray int整型vector<vector<>> 箱子 * @param boxTypesSize int整型 箱子类型数量 * @param truckSize int整型 卡车容纳箱子数 * @return int整型 */ int maximumUnits(vector<vector<int> >& ba, int bts, int ts) { // write code here sort(ba.begin(),ba.end(),[](auto a,auto b){return a[1]>b[1];}); int i=0; int ans=0; while(ts>0&&i<ba.size()){ if(ts>ba[i][0]){ ans+=ba[i][0]*ba[i][1]; ts-=ba[i][0]; i++; }else{ ans+=ts*ba[i][1]; ts=0; } } return ans; } }; // 83.3% https://leetcode.cn/problems/maximum-units-on-a-truck/submissions/ 力扣过了但笔试只83.3%// 检测某个点是否在某个区域内 // 如果在区域内或者在边上,返回到区域顶点的最大距离 // 如果在区域外或者在顶点上,返回到区域顶点的最小距离 class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param point double浮点型vector 鸟儿落地的坐标 * @param array double浮点型vector<vector<>> 桩的坐标 * @return double浮点型 */ double distance(vector<double>& p, vector<vector<double> >& a) { // write code here double x=p[0], y=p[1]; int n = a.size(); for(const auto& i:a){ if(i[0]==x&&i[1]==y) return 0.0; } double maxDis=0, minDis=0x0fffffff; for(const auto& i:a){ double dis=sqrt((i[0]-x)*(i[0]-x)+(i[1]-y)*(i[1]-y)); maxDis = max(dis, maxDis); minDis = min(dis, minDis); } bool in = true; sort(a.begin(),a.end()); if(x<a[0][0]||x>a[n-1][0]) in = false; return in ? maxDis : minDis; } };