【中】根据子数组和等分一维整数数组的最大组数
【易】二维矩阵的遍历
【难】字符串的数组的调整与下标修改,边界处理
自我介绍
单片机项目
linux如何查看上一条命令?
Linux查询进程的命令?
介绍一下map?
介绍下vector和list的区别和适用场景?
线程安全的实现?标准容器库的线程安全性?
C++ sort 的算法是怎么实现的?为什么要设置这几种排序?
除了上述的排序你还了解什么排序算法?基数排序的稳定性怎么实现的?
C++多态了解吗?简单介绍下它的实现原理和应用场景?
C++重载和重写了解吗?介绍下。
中等难度(面试官给出的难度定级)算法题,20分钟, 涉及租金的最大利润,减除租金(索引)的一次遍历,算法不难,主要是想到减除租金的影响
还能优化吗?不可以,二分法的时间复杂度更低,但是数据没有二段性,最低需要将数据遍历一遍。
//终端某合作经销商遇到一个烦恼,由于下半年各平台的打折活动频繁,其终端商品价格具有一定波动性。经销商为了保证获取最大利益,将该商品在连续的K天内的价格记录在了数组prices中。经销商在某天(设为i)决定购入某商品,将它们存入仓库。并在另外一天(设为j),经销商将商品卖出(i<=j),同时他还需要付给该仓库j-i元的租金(每天租金为1)。此经销商请你帮忙判断一下基无现在的规则,最多可以赚多少利润,并输出。注:为了简化实现,整个过程只买卖一次。。
//示例1:输入:prices=[2,1,5]输出:3解释:最优策略是第二天买入,第三天卖出,租金为1,利润为5-1-1=3.
//示例2:输入:prices=[7,6,5]输出:0解释:最优策略是任意一天买入,当天卖出,利润为0.
int profit(vector<int>& price) {
if (price.size() == 0) return 0;
int ret = 0;
int minval = price[0];
for (int i = 0; i < price.size(); ++i) {
if (price[i] - i <= minval) {
minval = price[i] - i;
}
else {
ret = max(ret, price[i] - minval - i);
}
}
return ret;
}
//数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
//示例 1:
//输入:n = 3
//输出:["((()))", "(()())", "(())()", "()(())", "()()()"]
//示例 2:
//输入:n = 1
//输出:["()"]
vector<string> ret;
string rec;
void create(int n, int l, int r) {
if (rec.size() == n * 2) {
ret.push_back(rec);
return;
}
if (l < n) {
rec.push_back('(');
++l;
create(n, l, r);
rec.pop_back();
--l;
}
if (r < l) {
rec.push_back(')');
++r;
create(n, l, r);
rec.pop_back();
--r;
}
}
int main() {
create(3, 0, 0);
for (auto& str : ret) {
cout << str << endl;
}
}
家庭情况,职业规划,平时看什么书,有没有学过计算机专业课,期望薪资
如果有意向华为OD的,*************************************************, lfyslp)!!!!