百度&必应权4, 日IP8000. 查看详情
自助收录

2023年华为OD机考真题:最差产品奖

算法刷题2年前 (2023)更新 江南白衣
374 0 0
2023年华为OD机考真题:最差产品奖

全网最全面的华为OD机试真题汇总,100%原题题库,不需要开会员即可查看全部内容,更多考题请查看真题库。

真题库:https://www.yuque.com/codernav.com/od

题目:最差产品奖
知识点:滑动窗口
时间限制:1s 空间限制:256MB 限定语言:不限
题目描述:
A公司准备对他下面的N个产品评选最差奖,评选的方式是首先对每个产品进行评分,然后根据评分区间计算相邻几个产品中最差的产品。评选的标准是依次找到从当前产品开始前M个产品中最差的产品,请给出最差产品的评分序列。
输入描述:
第一行,数字M,表示评分区间的长度,取值范围是0<M<10000
第二行,产品的评分序列,比如[12,3,8,6,5],产品数量N范围是-10000<N<10000
输出描述:
评分区间内最差产品的评分序列
示例1
输入:
3
12,3,8,6,5
输出:
3,3,5
说明:
12,3,8 最差的是3
3,8,6 中最差的是3
8,6,5 中最差的是5
解题思路:
用双层for循环求出一定区间内的最小值。
简单的不像是200分的题,不知道是不是有什么陷阱

Java代码实现一:

package com.codernav.demo.hwod.exam;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * @title 最差产品奖
 * @Description A公司准备对他下面的N个产品评选最差奖,评选的方式是首先对每个产品进行评分,然后根据评分区间计算相邻几个产品中最差的产品。
 * 评选的标准是依次找到从当前产品开始前M个产品中最差的产品,请给出最差产品的评分序列。
 * @Author 开发者导航
 * @website https://codernav.com
 * @date 2023/5/28
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int M = sc.nextInt();
        sc.nextLine();
        String[] strs = sc.nextLine().split(",");
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < strs.length - M + 1; i++) {
            int min = Integer.MAX_VALUE;
            for (int j = i; j < i + M; j++) {
                min = Math.min(min, Integer.parseInt(strs[j]));
            }
            list.add(min);
        }
        System.out.println(list);
    }

}

Java代码实现:满分代码实现

package com.codernav.demo.hwod.exam;

import java.util.Scanner;

/**
 * @title 最差产品奖
 * @Description A公司准备对他下面的N个产品评选最差奖,评选的方式是首先对每个产品进行评分,然后根据评分区间计算相邻几个产品中最差的产品。
 * 评选的标准是依次找到从当前产品开始前M个产品中最差的产品,请给出最差产品的评分序列。
 * @Author 开发者导航
 * @website https://codernav.com
 * @date 2023/5/28
 */
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int len = Integer.parseInt(in.nextLine());
            String str = in.nextLine();
            String[] arr = str.split(",");
            for (int itor = 0; itor < arr.length - len + 1; itor++) {
                int min = 10000;
                if (itor != 0) {
                    System.out.print(",");
                }
                for (int inner = 0; inner < len; inner++) {
                    int cur = Integer.parseInt(arr[itor + inner]);
                    if (min > cur) {
                        min = cur;
                    }
                }
                System.out.print(min);
            }
        }
    }
}
© 版权声明

相关文章

暂无评论

暂无评论...