小米食堂每年都会举办一次厨艺大赛,假设参赛的厨师一共有n位(n < 1000),比赛结束后没有公布评分,但是站在领奖台上的一排厨师中每位厨师都能看到与自己相邻的厨师(左或者右)里评分比自己低(看不到比自己分数高的人的分数)的评分。比赛结束之后要发奖金,以1K为单位,每位厨师至少会发1K的奖金,另外,如果一个厨师发现自己的奖金没有高于比自己评分低的厨师的奖金,就会不满意,作为比赛组织方,小米食堂至少需要发放多少奖金才能让所有厨师满意。

 输入描述:

每组数据为n+1个正整数单空格分割,其中第一个数为参赛厨师的人数,后面n个数为每位厨师的得分(0-100)

 输出描述:

输出至少需要多少K的奖金

示例1

输入

10 60 76 66 76 85 55 61 71 84 62

输出

20

结题思路:这道题类似于leetcode的分糖果问题。下面附上leecode分糖果问题的原题

There are N children standing in a line. Each child is assigned a rating value.

You are giving candies to these children subjected to the following requirements:

  • Each child must have at least one candy.
  • Children with a higher rating get more candies than their neighbors.

What is the minimum candies you must give?

根据题目的意思,我们可以知道我们可以知道为了让分到的糖果有等级区别,可以从左边往右看,要比左边比自己等级低的分的糖果多,从右边往左看,也要比自己等级低的分的糖果多。然后取两者之间的较大值。

具体算法如下:

初始化所有小孩糖数目为1,从左往右后扫描,如果第i个小孩等级比第i-1个高,那么i的糖数目等于i-1的糖数目+1;从右往左扫描,如果第i个的小孩的等级比i+1个小孩高,但是糖的数目却小或者相等,那么i的糖数目等于i+1的糖数目+1。

同样的,该题厨师分奖金问题也可以这么理解:把小孩子的糖理解成厨师的奖金,厨师的分数理解为小孩子的等级。代码如下:

import java.util.Scanner;
public class XiaoMI {public static void main(String args[]){Scanner sc=new Scanner(System.in);int n=sc.nextInt();int scores[]=new int[n];for(int i=0;i<n;i++){scores[i]=sc.nextInt();}//   System.out.println(countSaraly(scores,0,n-1));System.out.println(testSaraly(scores));}//按照分糖果的思想来public static int testSaraly(int scores[]){if(scores==null||scores.length==0)return 0;int length=scores.length;int money[]=new int[length];int sum=0;//初始值为1money[0]=1;//从左往右for(int i=1;i<length;i++){if(scores[i]>scores[i-1])money[i]=money[i-1]+1;elsemoney[i]=1;}sum+=money[length-1];//从右往左for(int i=length-2;i>=0;i--){if(scores[i]>scores[i+1]){//以下更新money,取从左往右和从右往左的最大值money[i]=money[i+1]+1>money[i]?money[i+1]+1:money[i];}//对奖金进行累加sum+=money[i];}return sum;}
}

时间复杂度是O(N),两个遍历,空间复杂度也是O(N),新建了一个数组。

小米2019秋招笔试真题--厨艺大赛奖金相关推荐

  1. 腾讯2019秋招笔试真题

    1.小Q爬塔 描述:小Q正在攀登一座宝塔,这座塔很特别,塔总共有n曾层,但是没两层之间的净高却不相同,所以造成了小Q爬过每层的时间也不同.如果某一层的高度为x,那么爬过这一层锁需的还是件也是x.小Q孩 ...

  2. 腾讯2019秋招笔试真题 1.小Q爬塔 2.妞妞的问题

    1.小Q爬塔 [问题描述]小Q正在攀爬一座宝塔,这座宝塔很特别,塔总共有n层,但是两层之间的净高却不相同,所以造成小Q爬过每层的时间也不同.如果某一次高度为x,那么爬过这一层所需时间也就是x.小Q还会 ...

  3. 【笔试题】京东2017秋招笔试真题

    笔试题 京东2017秋招笔试真题 1.进制均值 时间限制 C/C++语言 1000MS;其他语言 3000MS 内存限制 C/C++语言 65536KB;其他语言 589824KB 题目描述 尽管是一 ...

  4. 腾讯2018秋招笔试真题(2)

    腾讯2018秋招笔试真题 3.画家小Q [题目描述]画家小 Q 又开始他的艺术创作.小 Q 拿出了一块有 NxM 像素格的画板, 画板初始状态是空白 的,用'X'表示. 小 Q 有他独特的绘画技巧,每 ...

  5. 腾讯2018秋招笔试真题(1)

    腾讯2018秋招笔试真题 小Q的歌单 [题目描述]小 Q 有 X 首长度为 A 的不同的歌和 Y 首长度为 B 的不同的歌,现在小 Q 想用这些歌组成一个 总长度正好为 K 的歌单,每首歌最多只能在歌 ...

  6. 腾讯2018秋招笔试真题——安排机器

    本文参考自腾讯2018秋招笔试真题--安排机器 查看原文: 原文地址 题目描述:小Q的公司最近接到m个任务,第i个任务需要Xi的时间去完成,难度等级为yi.                 小Q拥有n ...

  7. 滴滴出行2017秋招笔试真题-编程题汇总_Java实现

    滴滴出行2017秋招笔试真题-编程题汇总_Java实现 注:有的题参考别人的思路,用我最容易理解的代码编的程序,所以可以不能最优的解法,后续我会进行更新,只是一个思路,我的笔记而已,所以不喜勿喷~~~ ...

  8. 【滴滴出行】2017秋招笔试真题(智力题)

    题目链接 然鹅我智力有限qwq而且这种题真的做了一部分就不想动了... 1.有50家人家,每家一条狗.有一天警察通知,50条狗当中有病狗,行为和正常狗不一样.每人只能通过观察别人家的狗来判断自己家的狗 ...

  9. 滴滴出行模拟系统C语言,【滴滴出行】2017秋招笔试真题(智力题)

    然鹅我智力有限qwq而且这种题真的做了一部分就不想动了... 1.有50家人家,每家一条狗.有一天警察通知,50条狗当中有病狗,行为和正常狗不一样.每人只能通过观察别人家的狗来判断自己家的狗是否生病, ...

最新文章

  1. 为Office Communicator启用超链接
  2. [原创]什么是CMM?
  3. 简单配置Mdeamon邮件服务程序。
  4. [SoapUI] Jenkins 配置不同环境(TP, LIVE)
  5. 带哨兵节点的链_关于链表中哨兵结点问题的深入剖析
  6. Spring体系常用方法(一)
  7. 防抖 节流_【前端面试】节流与防抖
  8. python类class定义_python基础教程之类class定义使用方法
  9. 中国电信与中国联通启动2.1GHz 5G主设备集采,规模24万站
  10. 高级点的php书,深入理解php:高级技巧、面向对象与核心技术(原书第3版) 中文pdf扫描版[76MB]...
  11. win10通过ping命令来检测网速
  12. Nerv实战 - 京东首页改版小结
  13. java 制作 winrar,windows 上java调用winrar压缩文件为rar 格式
  14. 各种Lisp系语言大检阅
  15. 人工智能与大数据行业的兴起,主要产生了哪些新的职位?
  16. 2022-C4-AI-基于飞桨的智慧书桌系统
  17. UBUNTU 16.04无线网卡驱动
  18. others:南怀瑾先生讲:呵呼嘘吹嘻呬六字诀养生诀的要领---《南怀瑾与彼得圣吉》
  19. CSK与KCF算法推导(二)
  20. echarts option 平均线和副标题

热门文章

  1. 2021-09-17
  2. 阿里云 云盾 安骑士 监控ECS离线 安全组规则 ip设置
  3. 深入分析linux内核的内存分配函数devm_kzalloc
  4. 关于left,top和translate2d以及translate3d性能问题的详讲
  5. HTML五子棋游戏论文,五子棋毕业论文-HTML开发五子棋的原型设计.doc
  6. oppok5和荣耀play4tpro哪个好
  7. Python 与金融科技5|批量抓取并保存上证50的交易数据
  8. 一个暴风雨的夜晚——一个普通而又伟大老师的一天
  9. 5分钟自动更新php,使用织梦计划任务功能让网站每5分钟更新一次
  10. 详解+推导 神经网络中的前向传播和反向传播公式(神经网络中的梯度下降)