题目描述

头条的2017校招开始了!为了这次校招,我们组织了一个规模宏大的出题团队,每个出题人都出了一些有趣的题目,而我们现在想把这些题目组合成若干场考试出来,在选题之前,我们对题目进行了盲审,并定出了每道题的难度系统。一场考试包含3道开放性题目,假设他们的难度从小到大分别为a,b,c,我们希望这3道题能满足下列条件:
a<=b<=c
b-a<=10
c-b<=10
所有出题人一共出了n道开放性题目。现在我们想把这n道题分布到若干场考试中(1场或多场,每道题都必须使用且只能用一次),然而由于上述条件的限制,可能有一些考试没法凑够3道题,因此出题人就需要多出一些适当难度的题目来让每场考试都达到要求,然而我们出题已经出得很累了,你能计算出我们最少还需要再出几道题吗?

输入描述:

输入的第一行包含一个整数n,表示目前已经出好的题目数量。第二行给出每道题目的难度系数d1,d2,...,dn。 数据范围对于30%的数据,1 ≤ n,di ≤ 5;对于100%的数据,1 ≤ n ≤ 10^5,1 ≤ di ≤ 100。在样例中,一种可行的方案是添加2个难度分别为20和50的题目,这样可以组合成两场考试:(20 20 23)和(35,40,50)。

输出描述:

输出只包括一行,即所求的答案。
示例1

输入

4
20 35 23 40

输出

2

答案描述

1.将难易程度排序,从小到大,从第二个数字开始遍历。

2.定义一个标志t,表示当前数字的前一个数字为三个数字中的第几个。

3.比较当前数字和前一个数字的之间的间隔。

4.如果间隔小于10,则t++,跳过,不做处理。如果t大于等于3,则说明已经凑成了完整的一组,需要将t赋值为1.

5.如果间隔小于20,并且前一个数为第一个数,则说明只需要在中间插入一个数即可凑成一组。此时,count++,t = 3;

6.如果前一个数的标记值t == 1; 并且间隔大于20,则说明需要在钱一个数后面加上两个数才能将前一个数凑成一个组。

7.如果钱一个数的标记值t == 2; 并且间隔大于10, 则说明需要在钱一个数后面加上一个数才能将前两个数凑成一个组。

8.最后一个数在循环中可能没有处理,所以需要在循环外重新添加。

import java.util.Arrays;
import java.util.Scanner;public class Main {public static void main(String[] args){Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] d = new int[n];Arrays.sort(d);int t = 1;int count = 0;for (int i = 1; i < n; i++){if (t < 3){if (d[i] - d[ i - 1] <= 10){t++;}else if (t ==  1 && d[i] - d[i - 1] <=20){count++;t = 3;}else {count+= 3 - t;t = 1;}}else {t = 1;}}count += 3 - t;System.out.println(count);}
}

【2017今日头条】头条校招(JAVA)相关推荐

  1. 今日头条2018校招测试开发方向(第一、二、三、四批)编程题汇总 - 题解

    对于今日头条这家公司来说,测试的题和后端开发的题几乎是一样的,但是由于第一批的后端开发的题没有在牛客网上放出来,因此,猜测后端开发第一批的题应该和后端开发第一批的题一样,同时也想做一个测试方向编程题的 ...

  2. 蘑菇街2015校招 Java研发笔试题 详解,2015java

    蘑菇街2015校招 Java研发笔试题 详解,2015java 1. 对进程和线程描述正确的是( ) A.  父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间. B.  改变 ...

  3. 2017年秋招美团Java程序员开发,看我如何拿到offer

    转载自  2017年秋招美团Java程序员开发,看我如何拿到offer 本人是一名本科毕业非计算机专业的程序员,面了阿里,结果没过,最后面上了美团,热乎乎的面经,昨天面的美团,虽然面完了HR面,但是感 ...

  4. 2017年 第八届蓝桥杯 Java B组真题整理

    2017年 第八届蓝桥杯 Java B组真题整理 1.购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞.这不,XX大促销又 ...

  5. 2021年小米校招java编程题

    2021年小米校招java笔试编程题(AC) 有幸成为今年小米校招二十万分母的一员,小米编程题不算难基本都是板子题.之前力扣周赛也能看出来,一群大佬十几分钟AK. 这次笔试分为单选.多选和两道编程题. ...

  6. 校招Java后端开发面经专栏——序

    目录 前言 本专栏将包含的内容 作者以往的免费Java基础专栏 本专栏内容索引 一.基础知识 二.实战面经 三.算法 四.其他经验 后记 前言 最近从各方面了解到的消息都显示:毕业生在逐年增多,各个企 ...

  7. 互联网公司校招Java面试题总结及答案——CVTE

    有的没有答案,或者重复的被我去掉了,其他的请参考我的系列文章: 互联网公司校招Java面试题总结及答案--美团 ( 百度Java面经)互联网公司校招Java面试题总结及答案--百度(目前只是部分总结) ...

  8. 华为校招 java 面试题

    华为校招 java 面试题 第一部分:选择题(30分) QUESTION NO: 1 public class Test {public static void changeStr(String st ...

  9. 华为校招java笔试题库_华为校招Java笔试题库,看你会不会做

    1.在java中如果声明一个类为final,表示什么意思? 答:final是最终的意思,final可用于定义变量.方法和类但含义不同,声明为final的类不能被继承. 2.父类的构造方法是否可以被子类 ...

  10. 背包问题 2020年小米校招JAVA岗笔试第二题

    对于背包问题:例如小偷东西问题 如上图 小偷最多可以带走重量位20.要尽可能带走多的商品. 所以应该设置数组capacity[20+1], 商品itmes [5+1] 其中,capacity[0]=0 ...

最新文章

  1. 顺风详解Nginx系列—Ngx中的变量
  2. kafka删除队列_没想到 Kafka 还会这样问,学会这些带你轻松搞定大厂面试!
  3. Git之常见零碎问题的原因分析和解决方案
  4. 【Tiny4412】 Tiny4412开发环境搭建
  5. 杭电OJ-1062_Text Reverse
  6. linux(4):Linux逻辑卷详解总结
  7. 蒙特卡罗方法介绍( 二)
  8. yum mysql安装 日志_yum 安装与使用MySQL
  9. 智伴机器人传销_智伴机器人是传销吗?
  10. CNNIC中国互联网络发展状况统计报告
  11. js库笔记(一):swr ahooks
  12. python 折线图变成直线图_python如何画折线图
  13. mosquitto接口流程图
  14. UVA 12325 宝箱 Zombie‘s Treasure Chest
  15. 如何用php农场项目,2020全新亲测php农场游戏源码-金币菇种植理财区块链源码 带商城系统...
  16. idea maven无法从私服下载jar和plugin
  17. Java 根据网络地址URL获取文件
  18. Dojo JQuery
  19. 数理统计基本概念梳理
  20. 对能源消耗的担忧笼罩着苹果爱尔兰数据中心

热门文章

  1. 常用流程图符号和基本流程图
  2. Linux编程入门(2)-实现who指令
  3. 阴历转阳历java_GitHub - opprime/calendarist: 一个可实现阳历、阴历、干支历间相互转换的JAVA工具...
  4. 谷歌Chrome浏览器主页被毒霸篡改
  5. 身份证扫描到一个PDF或图片
  6. STM32-M3(野火)SD卡读写/移植znFAT文件访问系统
  7. 一个umi4的项目适配到FireFox60.7.1esr版本上的从头到尾
  8. android 地球坐标 火星坐标系,IOS开发入门之iOS开发火星坐标系与地球坐标系解析...
  9. 含有一般疑问句的歌_一般疑问句,特殊疑问句和否定句
  10. 基于stm32的MAX31865铂电阻PT100测温全套资料