广州做网站哪家公司好,如何在百度做自己公司的网站,太原论坛2021,公司电商网站建设方案目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中#xff0c;刷题点这里 专栏导读
本专栏收录于《华为OD机试#xff08;JAVA#xff09;真题#xff08;A卷B卷#… 目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中刷题点这里 专栏导读
本专栏收录于《华为OD机试JAVA真题A卷B卷》。
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。
一、题目描述
A公司准备对他下面的N个产品评选最差奖评选的方式是首先对每个产品进行评分然后根据评分区间计算相邻几个产品中最差的产品。评选的标准是依次找到从当前产品开始前M个产品中最差的产品请给出最差产品的评分序列。
二、输入描述
第一行数字M表示评分区间的长度取值范围是0M10000。 第二行产品的评分序列比如[12,3,8,6,5]产品数量N范围是-10000N10000。
三、输出描述
评分区间内最差产品的评分序列。
四、解题思路
读取输入的评分区间长度 M 和产品评分序列 scoreArr。创建一个双端队列 deque用于存储最差产品的索引。遍历评分序列的前 M 个产品将索引添加到队列中。在添加索引之前先将队列尾部不符合最差产品要求的索引移除。创建一个列表 list用于存储评分区间内最差产品的评分序列。从第 M 个产品开始遍历评分序列每次遍历都将队列头部的索引对应的评分添加到 list 中。在添加新的索引之前先将队列尾部不符合最差产品要求的索引移除。检查队列的头部索引是否超出评分区间范围如果超出则移除头部索引。将当前索引添加到队列中。继续遍历下一个产品直到遍历完整个评分序列。最后输出评分序列 list。
五、Java算法源码
public static void main(String[] args) {Scanner sc new Scanner(System.in);// 评分区间的长度int M Integer.valueOf(sc.nextLine());// 产品的评分序列int[] scoreArr Arrays.stream(sc.nextLine().split(,)).mapToInt(Integer::parseInt).toArray();DequeInteger deque new ArrayDeque();for (int i 0; i M; i) {while (!deque.isEmpty() scoreArr[i] scoreArr[deque.getLast()]) {deque.pollLast();}deque.offer(i);}ListInteger list new ArrayList();for (int i M; i scoreArr.length; i) {list.add(scoreArr[deque.getFirst()]);while (!deque.isEmpty() scoreArr[i] scoreArr[deque.getLast()]) {deque.pollLast();}deque.offer(i);while (deque.getLast() - deque.getFirst() 1 M) {deque.pollFirst();}}list.add(scoreArr[deque.getFirst()]);for (int i 0; i list.size() - 1; i) {System.out.print(list.get(i) ,);}System.out.print(list.get(list.size() - 1));
}六、效果展示
1、输入
3 5,7,3,4,1,9,8,2
2、输出
3,3,1,1,1,2
3、说明
5,7,3最差37,3,4最差33,4,1最差14,1,9最差11,9,8最差19,8,2最差2 下一篇华为OD机试真题 Java 实现【简易内存池】【2023 B卷 200分 考生抽中题】
本文收录于华为OD机试JAVA真题A卷B卷
刷的越多抽中的概率越大每一题都有详细的答题思路、详细的代码注释、样例测试发现新题目随时更新全天CSDN在线答疑。