写点什么

【牛客】从青铜到王者 01,java 基础入门第二版第二章答案

用户头像
极客good
关注
发布于: 刚刚

[](


)二、买苹果


========================================================================


[题目链接](


)


题目描述:


小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供 6 个每袋和 8 个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好 n 个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好 n 个苹果,小易将不会购买。


输入要买的苹果,输出最少需要的袋子。


示例;


输入


20


输出


3


注意题目要求用最少的袋子去装苹果,就要注意条件了,通过穷


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


举发现 6 个苹果装的袋子不会超过 4 个,所以外面的大循环就是 6 个袋子的匹配,需要最少的袋子那么 6 个苹果的袋子就要尽可能的少。每次都是以差值 2 递增,就是加一个 8 个苹果的袋子,减少一个 6 个苹果的袋子。


import java.util.*;


public class Main {


public static void main(String[] args) {


Scanner scan = new Scanner(System.in);


int n = scan.nextInt();


int flg=0;


//两个数字相加只能是偶数。


if(n%2==1){


System.out.println(-1);


return;


}


//用 8 个苹果装的一般就是用最少的袋子


if(n%8==0){


System.out.println(n/8);


return;


}


for(int i=0;i<4;i++){


for(int j=0;j<13;j++){


if(n==(6i+8j)){


System.out.println(i+j);


flg=1;


return;


}


}


}


if(flg==0){


System.out.println(-1);


}


}


}


[](


)三、进制转换


=========================================================================


[题目链接](


)


题目描述:给定一个十进制数 M,以及需要转换的进制数 N。将十进制数 M 转化为 N 进制数。


示例:


输入


7 2


输出


111


进制转换需要用到辗转相除法来完成进制转换,十六进制还需要先将字母存储到数组中,在进行判断选择。


牛客的测试用例还有负数,需要加上一个判断,才能通过


import java.util.*;


public class Main{


public static void main(String [] args){


Scanner scan=new Scanner(System.in);


int a=scan.nextInt();


int b=scan.nextInt();


StringBuffer sb=new StringBuffer();


char []ch={'A','B','C','D','E','F'};


int temp=0; int flg=1;//判断是否为负数


while(a!=0){


if(a<0){


a=-a;


flg=0;


}


temp=a%b;


if(temp>9){


sb.append(ch[temp-9-1]);


}else {


sb.append(temp);


}


a=a/b;


}


if(flg==0){


sb.append('-');


}


System.out.println(sb.reverse().toString());//将字符串逆序输出


}


}


[](


)四、连续最大和


==========================================================================


[题目链接](


)


题目描述:一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3


输入两行 第一行为数字串的长度,第二行为数字串


示例:


输入


3


-1 2 1


输出


3


要理解题目意思才能做出正确的答案,是将连续子数组最大和,并不是将正数相加,遇到负数置零,也要加负数进行比较,并且测试用例中还有纯负数,就要返回数组中最大的一个数值了

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
【牛客】从青铜到王者01,java基础入门第二版第二章答案