头条校招 编程第一题

Posted y119777

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了头条校招 编程第一题相关的知识,希望对你有一定的参考价值。

头条的2017校招开始了!为了这次校招,略去!

简单的思路就是排序,然后数就行了。刚开始写的很简单,没考虑这样的情况比如(10,30,50),10和30之间可以插入20满足条件,然后这个例子的结果应该是3.我当时没有做出来!后来跟师姐简单讨论下,说是简单排序后,每3个3个检查一下不就可以了么,我恍然大悟,原来可以这样,我还以为很复杂呢!结束后我写了一下,不知道结果对不对。

 1 #include<bits/stdc++.h>
 2 #define pb push_back
 3 #define FOR(i, n) for (int i = 0; i < (int)n; ++i)
 4 #define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
 5 typedef long long ll;
 6 using namespace std;
 7 typedef pair<int, int> pii;
 8 const int maxn = 1e3 + 10;
 9 void solve() {
10     int n;
11     cin >> n;
12     if(n == 0) {
13         cout << 0 << endl;return;
14     }
15     if(n == 1) {
16         cout << 2 << endl; return;
17     }
18     vector<int> a(n);
19     for (int i = 0; i < n; i++) cin >> a[i];
20     sort(a.begin(), a.end());
21     int cnt = 0;
22     int res = 0;
23     for (int i = 0; i < n; i++) {
24             //cout << i <<endl;
25         if(i + 2 < n) {
26             if(a[i + 2] - a[i] <= 20) {i += 2;}
27             else if(a[i + 1] - a[i] <= 20) {
28                 res += 1;
29                 i += 1;
30             } else {
31                 res += 2;
32             }
33         } else {
34             if(i + 1 < n) {
35                 if(a[i + 1] - a[i] <= 20) {res++;}
36                 else res += 4;
37                 i++;
38             } else {
39                 res += 2;
40             }
41         }
42     }
43     cout << res << endl;
44 
45 }
46 int main() {
47     // freopen("data", "r", stdin);
48     //freopen("test.out", "w", stdout);
49     //int _ = 20;
50     //while(_--)
51     solve();
52     return 0;
53 }

 

以上是关于头条校招 编程第一题的主要内容,如果未能解决你的问题,请参考以下文章

头条18年校招后端开发工程师编程题解析

今日头条2017校招编程题

牛客2021第三次校招模拟笔试(编程题部分)

华为2020校招笔试编程题

最新校招京东百度头条算法面试真题分享

2017 今日头条编程题汇总: