你们的头条编程题都是什么题目啊?

看看大家的代码啊~
全部评论
//第一题代码 #include<bits/stdc++.h> using namespace std; const int maxn = 5*1e5 + 10; struct node{     int x,y;     bool operator < (const node &b)const{         if(x == b.x) return y > b.y;         return x > b.x;     } }T[maxn]; node tmp[maxn]; int main(){     int n,cnt = 0;     scanf("%d",&n);     for(int i = 0; i < n; i++)         scanf("%d%d",&T[i].x,&T[i].y);     sort(T,T+n);     int tmp_y = -1;     for(int i = 0; i < n; i++){         if(T[i].y >= tmp_y){             tmp[cnt].x = T[i].x;             tmp[cnt].y = T[i].y;             tmp_y = T[i].y;             cnt++;         }     }     for(int i = cnt-1; i >= 0; i--){         printf("%d %d\n",tmp[i].x,tmp[i].y);     } }
点赞 回复 分享
发布于 2017-08-22 21:03
第二题在本地ide都能通过,在牛客网上通过不了
点赞 回复 分享
发布于 2017-08-22 21:02
第一题排序,第二题单调栈。
点赞 回复 分享
发布于 2017-08-22 21:02
和楼主一样。。。 弱鸡只想到O(n^2)的宝丽洁
点赞 回复 分享
发布于 2017-08-22 21:02
我Android的,也是这两道题
点赞 回复 分享
发布于 2017-08-22 21:03
测试开发也是一样的编程题。。
点赞 回复 分享
发布于 2017-08-22 21:04
//第二题代码 #include<bits/stdc++.h> using namespace std; const int maxn = 5*1e5 + 10; int num[maxn],s[maxn]; int r[maxn],l[maxn]; int main(){     int n;     scanf("%d",&n);     s[0] = 0;     for(int i = 1; i <= n; i++){         scanf("%d",&num[i]);         s[i] = s[i-1] + num[i];     }     num[0] = -1;     num[n+1] = -1;     for(int i = 1; i <= n; i++){//求出左边比当前值小的第一个数         int k = i -1;         while(num[i] <= num[k])             k = l[k]-1;         l[i] = k+1;     }     for(int i = n; i >= 1; i--){         int k=i+1;         while(num[i] <= num[k])             k=r[k]+1;         r[i]=k-1;     }     int ans = -1;     for(int i = 1; i <= n; i++){         ans = max(ans,num[i]*(s[r[i]] - s[l[i]-1]));     }     printf("%d\n",ans); }
点赞 回复 分享
发布于 2017-08-22 21:04
头条的笔试我是真心无***说!!
点赞 回复 分享
发布于 2017-08-22 21:05
//我等渣渣只会遍历默默去哭了 /* 第一题 */ #include <iostream> #include <vector> using namespace std; struct NODE { int x; int y; }; int main() { int N; cin >> N; NODE *node = new NODE[N]; for(int i=0;i<N;i++) { cin >> node[i].x; cin >> node[i].y; } vector <NODE> ret; int istrue; for(int i=0;i<N;i++) { istrue = 1; for(int j=0;j<N;j++) { if(j != i) { if((node[j].x - node[i].x >= 0) && (node[j].y - node[i].y >= 0) ) istrue = 0; } } if(istrue == 1) ret.push_back(node[i]); } NODE temp; for(int i=0;i<ret.size();i++) { for(int j=1;j<ret.size()-1;j++) { if(ret[j].x > ret[j+1].x) { temp = ret[j]; ret[j] = ret[j+1]; ret[j+1] = temp; } } } for(int i=0;i<ret.size();i++) cout<<ret[i].x<<" "<<ret[i].y<<endl; return 0; } /* 第二题 */ #include <iostream> #include <vector> using namespace std; vector <int> team; vector < vector <int> > Teams; int max_ret = 0; int main() { int mid(vector <int> &vec, int k); void zuhe(int *arr,int i,int k,int n); int n; cin >> n; int *in = new int[n]; for(int i=0;i<n;i++) cin >> in[i]; for(int k = 1; k <= n; k++) zuhe(in, 0, k, n); // cout<<max_ret<<endl; getchar(); getchar(); delete []in; return 0; } int mid(vector <int> &vec, int k) { int sum = 0; int min = vec[0]; int index = 0; if(k == 1) sum = vec[0]; else { for(int i=0;i<k;i++) { if(vec[i] < min) { min = vec[i]; index = i; } } for(int j=0;j<k;j++) { if(j != index) sum += vec[j]; } } return min * sum; } void zuhe(int *arr,int i,int k,int n) { int temp; if(team.size() == k) { temp = mid(team,k); if(temp > max_ret) max_ret = temp; Teams.push_back(team); return; } for(int j = i; j < n; j++) { team.push_back(arr[j]); zuhe(arr, j + 1, k, n); team.pop_back(); } }
点赞 回复 分享
发布于 2017-08-22 21:10
同学你好!首先感谢你参加今日头条笔试,如果在笔试过程中遇到任何问题,可以通过申诉通道与我们联系。情况核对属实后,可以有二次笔试的机会,成绩以最后一次考试为准。【申诉通道】campushr@bytedance.com,请在正文简要说明笔试遇到的问题,邮件标题为: 笔试申诉+岗位+姓名+***话,我们会尽快回复~
点赞 回复 分享
发布于 2017-08-22 21:34
竟然留图了!!!
点赞 回复 分享
发布于 2017-08-22 21:42
机智的截图了,哈哈……
点赞 回复 分享
发布于 2017-08-22 21:44
//弱鸡分享一下自己带吗 //第一题AC0.6 #include<iostream> #include<vector> #include<algorithm> using namespace std; struct po { int x;  int y;  }; bool comparex(po a, po b){ return a.x<b.x ? true : false; } int main(){ int N; cin >> N; vector<po> P; vector<int> yp; po temp; for (int i = 0; i<N; i++){ cin >> temp.x >> temp.y; P.push_back(temp); yp.push_back(temp.y); } sort(P.begin(), P.end(), comparex); sort(yp.begin(), yp.end()); vector<po> res; for (int i = 0; i<N - 1; i++){ vector<int>::iterator ty_it = find(yp.begin(), yp.end(), P[i].y); yp.erase(ty_it); if (P[i].y>yp[yp.size() - 1]) res.push_back(P[i]); } res.push_back(P[N - 1]); for (int i = 0; i<res.size(); i++) cout << res[i].x << " " << res[i].y << endl; system("pause"); return 0; } //第二题AC0.5 #include<iostream> #include<vector> using namespace std; int main(){ int n, temp; cin >> n; vector<int> num; for (int i = 0; i<n; i++){ cin >> temp; num.push_back(temp); } int res = 0, tempres, curto, curmin; for (int i = 0; i<n; i++){ curto = num[i]; curmin = num[i]; tempres = num[i] * num[i]; for (int j = i + 1; j<n; j++){ curmin = curmin<num[j] ? curmin : num[j]; curto += num[j]; tempres = tempres>curto*curmin ? tempres : curto*curmin; } res = res>tempres ? res : tempres; } cout << res << endl; system("pause"); return 0; }
点赞 回复 分享
发布于 2017-08-22 21:47
有题目哈哈哈哈
点赞 回复 分享
发布于 2017-08-22 21:47

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务