当前位置: 首页 > article >正文

【美团20240309笔试算法题】小美的数组询问

系列文章目录

【美团20240309笔试算法题】小美的MT


目录

  • 系列文章目录
  • 小美的数组询问
    • 样例
    • 分析
    • java参考代码


小美的数组询问

小美拿到了一个由正整数组成的数组,但其中有一些元素是未知的(用0来表示)。现在小美想知道,如果那些未知的元素在区间[l,r]范围内随机取值的话,数组所有元素之和的最小值和最大值分别是多少?共有q次询问。


样例

输入:

  • 第一行整数n和q,表示数组的长度和询问的次数;
  • 第二行输入n个整数ai,其中如果输入ai的为 0,那么说明ai是未知的,接下来的q行,每行输入两个正整数l,r,代表一次询问。
3 2
1 0 3
1 2
4 4

输出:

  • 输出q行,每行输出两个正整数,代表所有元素之和的最小值和最大值。
5 6
8 8

分析

对于已知的元素,遍历的时候求和sum, 对于值为0的元素也就是未知的元素,用cnt记录下个数。这里给出了区间[l,r],也就能知道区间最大值和最小值。所以所有元素的最大值就是sum + cnt * r ; 最小值就是sum + cnt * l


java参考代码

package org.example;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int q = scanner.nextInt();int[] a = new int[n];for (int i = 0; i < n; i++) {a[i] = scanner.nextInt();}//cnt计算0的个数int cnt = 0;//sum计算除0之外所有数字之和int sum = 0;for (int i = 0; i < n; i++) {if (a[i] == 0) {cnt++;}sum += a[i];}//最大值就是sum 加上 cnt + r 其中cnt是0的个数,r是区间最大值即随机数的最大值。最小值反之。for (int i = 0; i < q; i++) {int l = scanner.nextInt();int r = scanner.nextInt();System.out.println((sum + cnt * l) + " " + (sum + cnt * r));}}
}
http://www.lryc.cn/news/2418359.html

相关文章:

  • ZooKeeper实战总结
  • WAVE SUMMIT+ 2023 倒计时:走进青少年开发者的AI创新之旅
  • 程序猿购物指南
  • ruby 生成html,Ruby编写HTML脚本替换小程序的实例分享
  • XPE一般性组件整理
  • 分布式系统中CAP理论详解、面试必问、看完你就理解了
  • 日语的颜色与色彩
  • 摩托罗拉XOOM解锁,刷入Recovery,XOOMROOT,卡刷ROM最全最实用的教程
  • How to play a video file?
  • AV管理 智联无限 | ATLONA全国巡回路演成功亮相济南!
  • IT男,你应该在任何行业所向披靡
  • Facebook:每天数千次配置更新,如何实现用户零干扰
  • 会议技术发展与高清视频会议系统
  • Metro风格的Java组合框(JMetro)–重新介绍
  • [2011-04-30]返现网排行榜
  • 108 道 Python 面试笔试题超强汇总 - 下部
  • Affinity Designer Beta for Mac(专业平面设计软件)
  • OMNIPAY(欧米派、欧米链)-全球领先的多链数字钱包
  • 免费资源网站大全
  • 国内外各大免费搜索引擎、导航网址提交入口
  • 如何入门编程:一份初学者的指南
  • Nginx部署代理访问网站正常,进入页面后刷新出现404问题
  • iphone6 问题总结
  • 商业模式了解
  • 一劳永逸解决VLC播放中文字幕乱码问题
  • Android编程权威指南(第4版)
  • 全自动高清录播服务器,全自动高清录播服务器 高清录播系统 一体化操作;易使用 操作简便...
  • 9家在iOS平台上收入最高的中国公司
  • udp transparent proxy
  • 15个国外最佳免费图片素材网站,快让小伙伴都知道