2018今日头条春招的一道笔试题——通过改变枚举的变量进行枚举优化(代码片段)

Tuple Tuple     2022-11-21     547

关键词:

 

题目如下:

 

   这道题我们最先想到的做法,应该就是2重循环枚举数对,然后把数对放在set里去重,最后输出set的大小,即输出set.size( )。
代码如下:
 1 #include<iostream>
 2 #include<set>
 3 using namespace std;
 4 
 5 int n, k, a[100000];
 6 set<pair<int, int>> mypairs;
 7 
 8 int main()
 9 
10     cin >> n >> k;
11     for(int i = 0; i < n; i ++)
12         cin >> a[i];
13     for(int i = 0; i < n; i ++)
14     
15         for(int j = 0; j < n; j ++)
16         
17             if(a[i] + k == a[j])
18                 mypairs.insert(make_pair(a[i], a[j]));
19         
20     
21     cout << mypairs.size() << endl;
22     return 0;
23 
View Code

 

通过使用哈希表进行枚举优化

优化后的思路:

   如果我们只枚举a[i],比如a[i]=3,那么如果存在数对的话,这个数对肯定是(a[i], a[i]+k)。比如样例里,假设我枚举数对里较小的值是3,那根据差是2,较大的肯定是5。所以,问题就变成,查找a[i]+k在不在输入的数组里。
 
该代码(支持C++11标准):
  针对这样的问题,哈希表是一个非常好用的工具。而且更方便的是,C++的STL已经帮我们把这些工具都实现好了,提供了非常方便的接口,我们直接用行了。下面介绍一下unordered_set,unordered_set可以把它想象成一个集合,它提供了几个函数让我们可以增删查:unordered_set::insert、unordered_set::find、unordered_set::erase.....
 1 #include<iostream>
 2 #include<unordered_set>
 3 using namespace std;
 4 
 5 int n, k, x, ans = 0;
 6 unordered_set<int> myset;
 7 
 8 int main()
 9 
10     cin >> n >> k;
11 
12     for(int i = 0; i < n; i ++)
13     
14         cin >> x;
15         myset.insert(x);
16     
17     for(int x : myset)
18     
19         if(myset.find(x+k) != myset.end())
20             ans ++;
21     
22     cout << ans << endl;
23     return 0;
24 

或者:(编译器不支持C++11标准的代码)

 1 #include<iostream>
 2 #include<set>
 3 using namespace std;
 4 
 5 int n, k, x, ans = 0;
 6 set<int> myset;
 7 
 8 int main()
 9 
10     cin >> n >> k;
11 
12     for(int i = 0; i < n; i ++)
13     
14         cin >> x;
15         myset.insert(x);
16     
17     for(set<int> ::iterator i = myset.begin(); i != myset.end(); i ++)
18     
19         if(myset.find((*i)+k) != myset.end())
20             ans ++;
21     
22     cout << ans << endl;
23     return 0;
24 
View Code

 

运行结果图如下:

 

 
 

头条笔试题2018后端第二批(代码片段)

...签(空格分隔):笔试题描述:为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一... 查看详情

2017-今日头条笔试题

1packagecom.shb.java;23importjava.util.ArrayList;4importjava.util.Arrays;5importjava.util.List;67/**8*实现将字符串中重复次数打印出来(就是这个意思,原话描述不清了)9*@authorshaobn10*@date2016-9-2811*@package_namecom.shb.java12*/13p 查看详情

一道头条笔试题:求区间的个数(代码片段)

给定两个长度都为N的整型数组a[N]和b[N],求满足如下条件的闭区间个数:在区间[l,r]上,a中的任意元素都比b中的任意元素小。这个问题是O(N)复杂度。关键在于发现一个规律:如果在区间[l+d,r]上满足上述条件,那么在更小的区间... 查看详情

trie树/字典树题目(2017今日头条笔试题:异或)

1/*2本程序说明:34[编程题]异或5时间限制:1秒6空间限制:32768K7给定整数m以及n各数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大于m的有多少个。8输入描述:9第一行包含两个整数n,m.1011第... 查看详情

今日头条笔试题1~n的每个数,按字典序排完序后,第m个数是什么?

#由于n和m都是10^18的范围,暴力明显不行,只能dfs了。#先预处理n的十进制,存到num数组中,长度计算出来为len,答案存到Num中。#写个函数cntOfBeginNum(int*Num,intanslen),计算以num为前缀的小于等于n的数的个数cnt,考虑长度比n的十... 查看详情

字节跳动(今日头条)的题目真的难吗?

大家好鸭,我是好好学习天天编程的天天,一个每天都努力精进,并努力分享的主儿。今天给聊得话题是关于字节跳动笔试题难度的。在各种交流群了,总是能看到大家在说字节跳动的题目好难呀,4个编程题没有一个题AC。天天... 查看详情

2018头条笔试题-世界杯问题(代码片段)

题目:输入如下面所示:前一行是m行、n列后面是这个m行n列的数据,从任意一个1出发,可上下、左右、斜角遍历要求输出有多少个连通图、连通图中包含的最大连通个数。 10,100,0,0,0,0,0,0,0,0,00,0,0,1,1,0,1,0,0,00,1,0,0,0,0,0,1,0,11,0,0... 查看详情

字节跳动(今日头条)的题目真的难吗?

大家好鸭,我是好好学习天天编程的天天,一个每天都努力精进,并努力分享的主儿。今天给聊得话题是关于字节跳动笔试题难度的。在各种交流群了,总是能看到大家在说字节跳动的题目好难呀,4个编程题没有一个题AC。天天... 查看详情

2021最新春招asp.netcore笔试题附答案(代码片段)

.NETCore笔试题1.如何在ASP.NETCore中激活Session功能?首先要添加session包.其次要在configservice方法里面添加session。然后又在configure方法里面调用usesession。。2.什么是中间件?中间件在这里是指注入到应用中处理请求和响应的组... 查看详情

今日头条2018aicamp5月26日在线笔试编程题第一道——最佳路径(代码片段)

题目给定一个n*m的矩阵A,矩阵中每一个元素为一个十六进制数。寻找一条从左上角都右下角的路径,每次只能向右或者向下移动, 使得路径上所有数字之积在16进制下的后缀0最少。输入描述:第一行:n,m(2<=n,m<=1000) ... 查看详情

前端笔试题汇总2018/12/04(代码片段)

定位布局:通过设置position属性实现。CSS中规定的第三种定位机制,能够实现横向多列布局及较为复杂的定位。比如:带有遮罩层效果的提示框、固定层效果、全屏广告等等。 流式布局:让布局脱离固定值限制,可以根据页... 查看详情

(百度17春招笔试题)有趣的排序

 时间限制:1秒空间限制:32768K度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作:任取数组中的一个数然后将它放置在数组的最后一个位置。问最少操作多少次可以使得数组... 查看详情

一道阿里的在线笔试题

如需转载请留言。题目如下:有一个消息队列集群,集群里每台Broker的响应时间RT都不一样,但是每台Broker的极限服务QPS都是一样的,超过这个QPS会出现过载雪崩。而消息的生产者客户端,每次发送都会选择其中的一台broker来发... 查看详情

如何通过今日头条引精准流量,学完即用

如何通过今日头条引精准流量,学完即用我发现很多人都对今日头条引流比较感兴趣,每天都有人在微信上问我做今日头条引流的玩法,我也多多少少的回答了他们。但是,头条规则改变太快,很多当前有效的玩法,没过多久就... 查看详情

网易春招笔试题工作安排

链接:https://www.nowcoder.com/questionTerminal/728fcf136ca1488b8043c82fd2b181da来源:牛客网现在有n位工程师和6项工作(编号为0至5),现在给出每个人能够胜任的工作序号表(用一个字符串表示,比如:045,表示某位工程师能够胜任0号,4号,5号... 查看详情

(百度17春招笔试题)度度熊回家

时间限制:1秒空间限制:32768K一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个... 查看详情

如何通过今日头条引精准流量,学完即用

  我发现很多人都对今日头条引流比较感兴趣,每天都有人在微信上问我做今日头条引流的玩法,我也多多少少的回答了他们。  但是,头条规则改变太快,很多当前有效的玩法,没过多久就失效了。这里说的玩法,是指文... 查看详情

今日头条&58转转笔试

昨天参加今日头条和58转转的笔试,因为时间上有冲突,所以主要选择参加头条的笔试。 先说头条: 头条的题型:一道改错题三道编程题一道设计题 感受:做题目的的时候还是有点紧张的,因为突然遇到题目需要思... 查看详情