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

蓝桥与力扣刷题(蓝桥 最少刷题数)

题目:小蓝老师教的编程课有 N 名学生, 编号依次是 1…N。第 i 号学生这学期 刷题的数量是 Ai​ 。

对于每一名学生, 请你计算他至少还要再刷多少道题, 才能使得全班刷题 比他多的学生数不超过刷题比他少的学生数。

输入格式

第一行包含一个正整数 N 。

第二行包含 N个整数: A1,A2,A3,…,AN​.

输出格式

输出 N 个整数, 依次表示第 1…N 号学生分别至少还要再刷多少道题。

样例输入

5
12 10 15 20 6

样例输出

0 3 0 0 7

解题思路+代码:(二分法思路)引用题解区通过全部用例(作者:秋叶  解题思路:先排序,再基于中值两侧元素数量的比较进行输出)

代码:

import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Arrays;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
    
    public static void main(String[] args) throws IOException{
        int n = Integer.parseInt(br.readLine());
        String[] str = br.readLine().split(" ");
        
        // 转为整型数组
        int[] nums = new int[n];
        for(int i=0; i<n; i++) {
          nums[i] = Integer.valueOf(str[i]);
        }
        
        // 对数组进行排序
        int[] arr = nums.clone();
        Arrays.sort(arr);
        
        // 得到中值
        int mid = arr[n/2];
        
        // 计算小于或大于中值的元素个数
        int less = 0;
        int more = 0;
        for (int i=0; i<n; i++) {
          if (nums[i] < mid)    
            ++ less;
          else if(nums[i] > mid) 
            ++ more;
        }
        
        // 进行判断,输出结果
        for(int i=0; i<n; i++) {
          if(nums[i] > mid)
            System.out.print("0 ");
          else if(nums[i] == mid && less >= more)
            System.out.print("0 ");
          else if(nums[i] == mid && less < more)
            System.out.print("1 ");
          else if(nums[i] < mid && less > more)
            System.out.print(mid-nums[i] + " ");
          else if(nums[i] < mid && less <= more)
            System.out.print(mid-nums[i]+1 + " ");
        }
      }
}

解题思路+代码:(暴力枚举+avg)(个人思路  通过30%用例) 

 

代码:

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] num = new int[n+2]; //防止数组下标越界

        for(int i = 1; i<=n; i++) num[i] = scan.nextInt(); //存放n名学生的刷题数量

        double sum = 0;//n名学生刷题的总数量
        int avg = 0; //n名学生刷题的平均数量
        int task = 0; //需要再刷的题量

        for(int i = 1; i<=n; i++){
            sum += num[i]; //63
        }
        avg = (int)(Math.ceil(sum / (double) n)); //平均数向上取整 avg = 13

        for (int i = 1; i <= n; i++) {
            // 计算每个学生需要再刷的题量
            int countMore = 0; // 比自己刷题量多的人数
            int countLess = 0; // 比自己刷题量少的人数
            for (int j = 1; j <= n; j++) {
                if (num[i] < num[j]) {
                    countMore++;
                } else if (num[i] > num[j]) {
                    countLess++;
                }
            }
            if (countMore > countLess) {
                task = avg - num[i];
            } else if (countMore <= countLess) {
                task = 0;
            }
            System.out.print(task > 0 ? task + " " : 0 + " ");
        }
        scan.close();
    }
}

总结: 路漫漫其修远兮,吾将上下而求索,接下来也会更多地去考虑题目中的一些逻辑和细节方面的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/95785.html

相关文章:

  • 2025企业级项目设计三叉戟:权限控制+错误监控+工程化提效实战指南
  • 手动搭建并配置react项目(webpack5)
  • 运筹说 第134期 | 矩阵对策的解法
  • 故障识别 | 基于改进螂优化算法(MSADBO)优化变分模态提取(VME)结合稀疏最大谐波噪声比解卷积(SMHD)进行故障诊断识别,matlab代码
  • 深度学习Note.4(机器学习实践)
  • C++细节知识for面试
  • C 语言常用关键字详解:static、const、volatile
  • 对于后端已经实现逻辑了,而前端还没有设置显示的改造
  • LLM 优化技术(2)——paged_attention 原理
  • 进程间通信—system v标准
  • leetcode102 二叉树的层次遍历 使用队列实现二叉树广度优先遍历
  • vue2、vue3项目中遇到的问题总结(一)
  • 【网络协议】【http】http 简单介绍
  • vue-cli工具build测试与生产包对css处理的不同
  • PDF 文本提取为何如此困难?– 原因和解决方案
  • 如何破解软件自动化测试框架的维护难题
  • 跨境电商生死存亡:AI反检测技术是否能为卖家保驾护航?
  • Ubuntu桌面环境下网络设置选项缺失问题解决
  • 在Java中集成DeepSeek的详细步骤
  • ADAS智能驾驶功能
  • 前端 VSCODE 插件开发总结 (后续将出专栏详细讲解开发的细节...)
  • 【性能优化点滴】odygrd/quill 中将 MacroMetadata 变量声明为 constexpr
  • 蓝桥杯 双子数
  • Go 语言标准库中Channels,Goroutines详细功能介绍与示例
  • 2025AWE观察:“无AI不家电”,但“AI”还是“AL”仍是个问题
  • OpenCV图像拼接(10)用于实现图像拼接过程中的时间流逝(timelapse)效果的一个类cv::detail::Timelapser
  • 【产品小白】产品视角的RAG
  • 进程状态:Linux的幕后指挥管理,穿越操作系统进程的静与动
  • 自然语言处理|高效法律助手:AI如何解析合同条款?
  • ChatBI的流程图