java面试题csdn_java底层面试题

java面试题csdn_java底层面试题问题是:n只奶牛坐在一排,每个奶牛拥有ai个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出-1输出描述:输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出-1。输入例子:471595输出例子:3im…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

问题是:n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1

输出描述:
输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则输出 -1。

输入例子:
4
7 15 9 5

输出例子:
3

import java.util.Scanner;

/** * 分苹果问题 * @author cc_小白成长 * */
public class TestApple{ 
   
    public static void main(String[] args) {
        //创建输入
        Scanner sc = new Scanner(System.in);
        //输入整数,
        int n =   sc.nextInt();
        //定义数组,存放输入数据
        int [] arr = new int[n];
        //用于计算所有数的和
        int num = 0;
        //循环输入,并计算输入数字的和
        for(int i = 0 ;i<n ;i++){
            arr[i] = sc.nextInt();
             num+=arr[i];
        }

        //第一次判断 输入的数是否能被整除
        if(num%n!=0){
  
  //能被整除才能实现,每人分的苹果一样
            System.out.println(-1);
            return;
        }
        //经过前面的判断,这里num/n必定是整数
        int avg = num/n;
        //num重置 你可以重新定义变量存结果
        num = 0;
        //循环计算结果
        for(int i = 0;i<n;i++){
            //这里是用户判断奇偶
            /* * 注意 重点1 如果avg是奇数则每人手上都应该是奇数(你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上) */
            if(avg%2!=arr[i]%2){
                //显然不满足条件
                System.out.println(-1);
                return;
            }
            // 用于计算结果
            /* 注意 重点2 我们只需要计算avg>arr[i]或者avg<arr[i]即可得到结果 */ 
             if((avg-arr[i])>0){
                 num += ( avg-arr[i])/2;//除2的目的是每次移动两个苹果
            }
        }
        System.out.println(num);
    }
}

测试
例1:
4
15 7 9 5
结果:3
例2:
92
2 76 20 6 20 10 18 34 44 2 14 30 4 84 16 4 20 10 60 10 40 4 4 54 10 40 40 4 30 8 10 4 4 12 28 20 20 40 4 10 12 10 6 6 12 2 18 28 4 32 2 18 8 54 56 10 18 12 20 18 50 24 30 58 42 62 28 16 6 12 22 8 34 8 14 6 78 4 8 28 6 4 20 4 52 2 28 26 38 64 10 16
结果: 354

需要注意两个重点,以及判断不满足条件的情况果断return;
欢迎交流学习

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183875.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot重点详解–使用Druid+Jpa

    SpringBoot重点详解–使用Druid+Jpa目录Druid简介添加依赖与配置配置数据源配置Druid监控统计功能方式一(基于Servlet3.0注解的配置)方式二(基于Spring注解的配置)配置JPA应用测试Druid简介Druid是阿里巴巴开源的数据库连接池,号称是Java语言中最好的数据库连接池,能够提供强大的监控和扩展功能。GitHub地址:https://github.com/al…

    2022年7月23日
    28
  • strcmp函数的使用_用c语言实现strcmp

    strcmp函数的使用_用c语言实现strcmpAction(){/**********************************Author:旺仔*object:strcmp*date:2015-12-09*fuc:我输

    2022年8月3日
    6
  • 串口调试助手fx2n_PLC串口调试助手详细讲解(结合实操)「建议收藏」

    串口调试助手fx2n_PLC串口调试助手详细讲解(结合实操)「建议收藏」下面技成培训网给大家分享一则案例文,学员常见问题!经常会有学员问,老师老师,我的PLC和变频器通讯不上了,不知道什么原因,您能帮我看看么。其实吧,这个一般远程是帮不上你什么的,还是要你自己去测试,找出问题,那么怎么测试呢,今天就给大家做一个详细的解说,我们通过一个实际对的案例,结合一个叫做串口调试助手的小工具,带大家了解,通讯出问题了,一般是怎么去查找问题的。案例是这样的:一台三菱的PLC,PLC…

    2022年6月4日
    59
  • vsftp简介[通俗易懂]

    vsftp简介[通俗易懂]一、简介FTP(文件传输协议)全称是:VerySecureFTPServer。Vsftpd是linux类操作系统上运行的ftp服务器软件。vsftp提供三种登陆方式:1.匿名登录2.本地用户登录3.虚拟用户登录vsftpd的特点:1.较高的安全性需求2.带宽的限制3.创建支持虚拟用户4.支持IPV65.中等偏上的性能6.可分…

    2022年9月24日
    5
  • Idea 2021.8.5 永久激活码(JetBrains全家桶)

    (Idea 2021.8.5 永久激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32P…

    2022年3月25日
    181
  • gzip解压报错_解压文件报错怎么办

    gzip解压报错_解压文件报错怎么办用文本方法传输一个net-snmp-5.6.1.1.tar.gz去linux,结果报错,

    2025年9月26日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号