2018春招-今日头条笔试题5题(后附大佬答案-c++版)

1题目描述

在n个元素的数组中,找到差值为k的除重后的数字对

输入描述

第一行:n和k,n表示数字的个数,k表示差值

第二行:n个整数

输入样例

         输入:

                  5 2

                  1 5 3 4 2

         输出:

                  3

         说明:

                  (1,3),(5,3),(4,2)

         输入:

                  6 2

                  1 5 3 3 4 2

         输出:

                  3

         说明:

                  (1,3),(5,3),(4,2)

         输入:

                  4 0

                  1 1 1 1

         输出:

                  1

         说明:

                  (1,1)

第一题python实现

2题目描述

定义两个字符串变量:s和m,再定义两个操作:

第一种操作:m=s         s=s+s

第二种操作:s=s+m

假设s和m,初始如下:

s='a'         m=s

求最小步骤数,可以将s拼接到长度等于n

输入描述

一个整数n,表明我们需要得到s字符串长度,0<n<1000

输出描述

一个整数,表明总共操作次数

输入样例:

         输入

         6

         输出

         3

         说明:

         输入是6,表明我们需要得到s字符串长度为6,也就是s为最终为‘aaaaaa’,那么依次使用2次“第一种操作”和1次“第二种操作”就能达到目的,总共操作次数是3

         输入

         5

         输出

         4

         说明:

         输入是5,表明我们需要得到s字符串长度为5,也就是‘aaaaa’,那么直接使用4次“第二种操作”就能达到目的,总共操作次数是4

第二题python实现

3题目描述

如下用‘6’拼出0123456789,其中用.. 隔开每个数字

输入描述

第一行为一个整数n

接下来n行,每行为一个表达式

表达式长度不超过100,1<=n<=100,表达式中仅仅包含'+'、' - '、'*'、' /'四中字符串,中间结果在[-2^63,2^63-1]范围内,最总结果在[0, 2^63-1]范围内

输入样例:

         输入

         2

         6+6

         6*6

         输出

  

第三题python实现

4题目描述

给定一个包含整数的集合a和一个集合b。定义magic操作,从一个集合中去除一个数,放到一个集合里,且操作过后每个集合的平均值都大于操作前。

注意以下两点:

①不可以把一个集合的元素都取空,这样就没有平均值了

②值为x的元素从集合b中取出放入集合a,但集合a中已经有值为x的元素,则a的平均值不变(因为集合元素不会重复),b的平均值可能会改变(因为x被取出)

问最多可以进行多少次magic操作?

输入描述

第一行为两个整数n,m

第二行n个整数,表示集合a中的元素

第三行m个集合,表示集合b中的元素

输出描述

输出一个整数,表示最多可以进行的操作次数

输入样例

        输入

        3 5

        1 2 5

        2 3 4 5 6

        输出

        2

        说明

        依存从b集合取出3、4元素放入集合

第四题python实现

5题目描述

小T最近迷上了一款跳板游戏

已知空中有N个高度互不相同的跳板,小T刚开始在高度为0的地方,每次跳跃可以选择与自己当前高度绝对值差小于等于H的挑板,跳跃过后到达以跳板为轴的镜像位置,问小T在最多条K次的情况下能跳多高?(任意时刻,高度不能为负)

输入描述

第一行三个整数 N,K,H

以下N行,每行一个整数Ti,表示第i个跳板离地的高度

输出描述

一个整数,表示最高能跳到的高度

输入样例

        输入

        3 3 2

        1

        3

        6

        输出

        8

        说明

        小T初始在高度0的地方

        第一次跳跃只能选择高度为1的跳板,结束后到达高度为2的地方,计算方式:

        高度1=初始高度+(跳板高度-初始高度)*2=0+(1-0)*2=2

        第二次跳跃只能选择高度为3的跳板,结束后达到高度为4的地方,计算方式:

        高度2=高度1+(跳板2高度-高度1)*2=2+(3-2)*2=4

        第二次跳跃只能选择高度为6的跳板,结束后达到高度为8的地方,计算方式:

        高度3=高度2+(跳板3高度-高度2)*2=4+(6-4)*2=8

 大佬的答案(c++):https://www.nowcoder.com/discuss/70299?type=0&order=0&pos=7&page=1

 

原文地址:https://www.cnblogs.com/ybf-yyj/p/8647940.html