文档内容
本资料属www.wuyouquizhi.com及旗下天天向上求职工作室&职场精英工作室所有仅限购买者个人使用,不得分享/转赠/转卖;版权所有,盗版可耻
今日头条 2018 校招算法方向
-----本资料属www.wuyouqiuzhi.com及旗下天天向上求职工作室&职场精英工作室独家所有,仅限购买者个人使用,不得分
享/转赠/转卖;版权所有,盗版可耻
-----正版购买地址:官网www.wuyouqiuzhi.com及旗下淘宝店:天天向上求职工作室(唯一客服:galerjim)或职场精英工
作室(唯一客服:蔚蓝小小天使),或者下载移动端刷题软件(名称为:笔试通)亦可购买
银行求职笔试面试-天天向上求职工作室,店址:https://51jobs.taobao.com/ 唯一旺旺客服:galerjim
证券保险大型国企求职笔试面试-职场精英工作室,店址:https://huntjob.taobao.com/ 唯一旺旺客服:蔚蓝小小天使本资料属www.wuyouquizhi.com及旗下天天向上求职工作室&职场精英工作室所有仅限购买者个人使用,不得分享/转赠/转卖;版权所有,盗版可耻
P为给定的二维平面整数点集。定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵
坐标都大于x),则称其为“最大的”。求出所有“最大的”点的集合。(所有点的横坐标和纵坐标都不重复, 坐标
轴范围在[0, 1e9) 内)
如下图:实心点为满足条件的点的集合。请实现代码找到集合 P 中的所有 ”最大“ 点的集合并输出。
#include
using namespace std;
struct Point
{
int x, y;
};
Point points[500001];
int main()
{
int n;
cin >> n;
for (size_t i = 0; i < n; i++)
{
scanf("%d%d", &points[i].x, &points[i].y);
}
//按照y升序 x降序排列
sort(points, points + n,
银行求职笔试面试-天天向上求职工作室,店址:https://51jobs.taobao.com/ 唯一旺旺客服:galerjim
证券保险大型国企求职笔试面试-职场精英工作室,店址:https://huntjob.taobao.com/ 唯一旺旺客服:蔚蓝小小天使本资料属www.wuyouquizhi.com及旗下天天向上求职工作室&职场精英工作室所有仅限购买者个人使用,不得分享/转赠/转卖;版权所有,盗版可耻
[](Point & p1, Point & p2)
{
return p1.y == p2.y ? p1.x > p2.x : p1.y < p2.y;
});
printf("%d %d\n", points[n - 1].x, points[n - 1].y);
int maxx = points[n - 1].x;
for (int i = n - 2; i >= 0; i--)
{
if (points[i].x > maxx)
{
printf("%d %d\n", points[i].x, points[i].y);
maxx = points[i].x;
}
}
return 0;
}
给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个:
区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序
列 [6 2 1]则根据上述公式, 可得到所有可以选定各个区间的计算值:
[6] = 6 * 6 = 36;
[2] = 2 * 2 = 4;
[1] = 1 * 1 = 1;
[6,2] = 2 * 8 = 16;
[2,1] = 1 * 3 = 3;
[6, 2, 1] = 1 * 9 = 9;
从上述计算可见选定区间 [6] ,计算值为 36, 则程序输出为 36。
区间内的所有数字都在[0, 100]的范围内;
1 完美AC。以第i个元素为最小值分别向两边扩大区间至最大,算出该元素与区间内所有数的和的
2 乘积f(i),遍历所有元素,更新f(i)即可。
#include
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int x[n];
for (int i=0; i>x[i];
银行求职笔试面试-天天向上求职工作室,店址:https://51jobs.taobao.com/ 唯一旺旺客服:galerjim
证券保险大型国企求职笔试面试-职场精英工作室,店址:https://huntjob.taobao.com/ 唯一旺旺客服:蔚蓝小小天使本资料属www.wuyouquizhi.com及旗下天天向上求职工作室&职场精英工作室所有仅限购买者个人使用,不得分享/转赠/转卖;版权所有,盗版可耻
int max=0;
for (int i=0; i=0)
{
sum1+=x[k];
k--;
}
int temp=sum1;
if (x[i]*temp>max)
max=x[i]*temp;
}
cout << max << endl;
}
return 0;
}
产品经理(PM)有很多好的idea,而这些idea需要程序员实现。现在有N个PM,在某个时间会想出一个 idea,
每个 idea 有提出时间、所需时间和优先等级。对于一个PM来说,最想实现的idea首先考虑优先等级高的,
相同的情况下优先所需时间最小的,还相同的情况下选择最早想出的,没有 PM 会在同一时刻提出两个 idea。
同时有M个程序员,每个程序员空闲的时候就会查看每个PM尚未执行并且最想完成的一个idea,然后从中挑
选出所需时间最小的一个idea独立实现,如果所需时间相同则选择PM序号最小的。直到完成了idea才会重
复上述操作。如果有多个同时处于空闲状态的程序员,那么他们会依次进行查看idea的操作。
求每个idea实现的时间。
输入第一行三个数N、M、P,分别表示有N个PM,M个程序员,P个idea。随后有P行,每行有4个数字,
分别是PM序号、提出时间、优先等级和所需时间。输出P行,分别表示每个idea实现的时间点。
#include
using namespace std;
typedef struct Idea {
int id,raise,pri,cost;
}Idea;
int n,m,num;
vector> pmIdea;
银行求职笔试面试-天天向上求职工作室,店址:https://51jobs.taobao.com/ 唯一旺旺客服:galerjim
证券保险大型国企求职笔试面试-职场精英工作室,店址:https://huntjob.taobao.com/ 唯一旺旺客服:蔚蓝小小天使本资料属www.wuyouquizhi.com及旗下天天向上求职工作室&职场精英工作室所有仅限购买者个人使用,不得分享/转赠/转卖;版权所有,盗版可耻
map finish;
typedef struct Programmer {
int time;
Programmer() {
time=0;
}
int done() {
int index=-1;
vector::iterator idea_search;
for (int i=0; iraise<=time) break;
}
if (it==ideas.end()) continue;
if (index==-1 || it->costcost) {
idea_search = it;
index = i;
}
}
if (index!=-1) {
time += idea_search->cost;
finish[idea_search->id] = time;
pmIdea.at(index).erase(idea_search);
return 1;
}
else time++;
return 0;
}
}Programmer;
bool cmp1(Idea a, Idea b) {
if (a.pri!=b.pri) {
return a.pri>b.pri;
}
else if (a.pri==b.pri && a.cost!=b.cost) {
return a.cost pro(m);
while (num>0) {
sort(pro.begin(), pro.end(), cmp2);
num -= pro.begin()->done();
}
for (auto it=finish.begin(); it!=finish.end(); ++it) {
printf("%d\n", it->second);
}
return 0;
}
给定一棵树的根节点, 在已知该树最大深度的情况下, 求节点数最多的那一层并返回具体的层数。
如果最后答案有多层, 输出最浅的那一层,树的深度不会超过100000。实现代码如下,请指出代码中的多处错
误:
struct Node {
vector sons;
};
void dfsFind(Node *node, int dep, int counter[]) {
counter[dep]++;
for(int i = 0; i < node.sons.size(); i++) {
dfsFind(node.sons[i], dep, counter);
}
}
银行求职笔试面试-天天向上求职工作室,店址:https://51jobs.taobao.com/ 唯一旺旺客服:galerjim
证券保险大型国企求职笔试面试-职场精英工作室,店址:https://huntjob.taobao.com/ 唯一旺旺客服:蔚蓝小小天使本资料属www.wuyouquizhi.com及旗下天天向上求职工作室&职场精英工作室所有仅限购买者个人使用,不得分享/转赠/转卖;版权所有,盗版可耻
int find(Node *root, int maxDep) {
int depCounter[100000];
dfsFind(root, 0, depCounter);
int max, maxDep;
for (int i = 1; i <= maxDep; i++) {
if (depCounter[i] > max) {
max = depCounter[i];
maxDep = i;
}
}
return maxDep;
}
链 接 : 来源:
https://www.nowcoder.com/questionTerminal/6d7fa68eacaf486994cf8b9979754c37
牛客网
struct Node {
vector sons;
};
void dfsFind(Node *node, int dep, int counter[]) {
if(node == NULL) return; //如果node为NULL
counter[dep++]++; //进行dep自增
for(int i = 0; i < node->sons.size(); i++) { // node是指针
dfsFind(node->sons[i], dep, counter); //同上
}
}
int find(Node *root, int maxDep) {
if(root == NULL) return -1; //边界
int depCounter[100000];
银行求职笔试面试-天天向上求职工作室,店址:https://51jobs.taobao.com/ 唯一旺旺客服:galerjim
证券保险大型国企求职笔试面试-职场精英工作室,店址:https://huntjob.taobao.com/ 唯一旺旺客服:蔚蓝小小天使本资料属www.wuyouquizhi.com及旗下天天向上求职工作室&职场精英工作室所有仅限购买者个人使用,不得分享/转赠/转卖;版权所有,盗版可耻
memset(depCounter, 0, sizeof(depCounter)); //置零,必要???
dfsFind(root, 0, depCounter);
int max=0, maxDeplevel=0; // 初值,修改maxDep
for (int i = 0; i < maxDep; i++) { //小于号
if (depCounter[i] > max) {
max = depCounter[i];
maxDeplevel = i; //对应修改
}
}
return maxDeplevel; //对应修改
}
早期短链接广泛应用于图片上传网站,通过缩短网址URL链接字数,达到减少代码字符串的目的。常见于网
店图片分类的使用,因有字符个数限制,采用短链接可以达到外链图片的目的。自微博盛行以来,在微博字数
有限的特色下,短链接也盛行于微博网站,以节省字数给博主发布更多文字的空间。
问题描述:设计一个短链生成和查询系统,需要提供以下两个功能:
1、提供长链转换短链的接口
2、点击短链能跳转到对应的长链
题目要求:
1、同一个长链生成同一个短链接,不要有多个短链指向同一个长链。
2、同一个短链只能指向某一个长链,短链生成后要固定不变,不能再指向其它长链。
3、给出系统架构,需要考虑高并发解决方案。
4、考虑存储和缓存方案
数据量预估:
1、预计长链接总量500亿
2、长链换短链请求量:10W qps
3、短链跳转请求量:100W qps
银行求职笔试面试-天天向上求职工作室,店址:https://51jobs.taobao.com/ 唯一旺旺客服:galerjim
证券保险大型国企求职笔试面试-职场精英工作室,店址:https://huntjob.taobao.com/ 唯一旺旺客服:蔚蓝小小天使