第1关:气温预测
挑战任务
根据每日气温
数组,请重新生成一个数组,新数组对应位置的是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请用0
来代替。
例如:给定一个数组 temps = {34,35,33,25,44,19,18,17}
新生成的数组应该为[1, 3, 2, 1, 0, 0, 0, 0]
。
temps
数组第一天温度是34℃
,第二天是35℃
,所以对应新生成数组位置的数据应该是1
,代表还需等待1天就会升温,第二天温度是35℃
,还需等待3天才会出现比35℃
还高的温度(44℃
),第五天温度是44℃
,之后都不会升温了,则用0
来代替。
编程要求
补充完善右侧代码区中的dailyTemps(Integer[] temps)
函数,实现,最后返回计算的结果即可。
注意:气温 列表长度的范围是 [1, 10000]
。每个气温的值的都是 [0, 100]
范围内的整数。
测试说明
样例1
输入:
34 35 33 25 44 45 46 17
输出:
[1, 3, 2, 1, 1, 1, 0, 0]
开始挑战吧,祝你成功!
AcCode:
package step1;
public class Task {
public int[] dailyTemps(Integer[] temperatures){
/********** BEGIN **********/
int [] days = new int[temperatures.length];
int top = 0;
for (int i = 0; i < temperatures.length; i++) {
int k = 0;
boolean isFind = false;
for (int j = i+1; j < temperatures.length; j++) {
k++;
if(temperatures[j]>temperatures[i]) {
isFind = true;
break;
}
}
if(isFind) {
days[top++] = k;
}else {
days[top++] = 0;
}
}
return days;
/********** END **********/
}
}
第2关:折纸小游戏
挑战任务
树袋熊是“绿盟”社区的一名绿色资源爱好者。他买了一个长方形彩纸,想要裁剪成尽可能大的相同大小的正方形彩纸送给女朋友,而且贯彻绿色精神,不能有剩余。请你编程序来帮他追到女朋友吧!
题目描述:
长方形彩纸长m
,宽n
,求出裁剪的相同大小的正方形的边长j
的最大值以及小正方形的个数k
。其中m,n,j,k
均为正整数。
输入:
第一行为长方形的长m
第二行为长方形的宽n
输出:
第一行输出正方形边长最大值j
第二行输出正方形个数k
编程要求
补充完善右侧代码区中的main
函数,实现根据输入来判断正方形边长最大值和正方形个数的功能,具体要求如下:
测试说明
样例1
输入:
4
2
输出:
2
2
样例2
输入:
7
3
输出:
1
21
开始挑战吧,祝你成功!
AcCode:
package step2;
import java.util.Scanner;
public class Task {
public static int getGys(int a,int b) {
int mod = a%b;
while(mod!=0) {
a = b;
b = mod;
mod = a%b;
}
return b;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int length = sc.nextInt(); //长
int width = sc.nextInt(); //宽
/********** BEGIN **********/
int maxLength = getGys(length, width);
System.out.println(maxLength);
System.out.println((length*width)/(maxLength*maxLength));
/********** END **********/
}
}
第3关:渡口与船
挑战任务
给定一个渡口(二维的),请计算渡口中停了多少艘船。 船用 +
表示,空位用字母o
表示。 你需要遵守以下规则:
1
行, N
列组成,或者 N
行, 1
列组成,其中N
可以是任意大小。编程要求
补充完善右侧代码区中的countOfShips(char[][] ferry)
函数,实现根据输入的数组来判断船的数量,将船的数量作为返回值返回。
测试说明
样例1
输入:3 4
+ + + +
o o o o
o o o o
输出:
1
样例2
输入:3 4
+ o o +
o o o +
o o o +
输出:
2
注意:右侧测试集中有输入参数传入,如:3 4
,这两个数字是后台构建渡口时传入的大小,不会作为函数countOfShips
的参数传入,可以忽略这两个数字的作用。
无效样例:
o o o +
+ + + +
o o o +
你不会收到这样的无效样例,因为船之间至少会有一个空位将它们分开。
开始挑战吧,祝你成功!
AcCode:
package step3;
public class Task {
public int countOfShips(char[][] ferry) {
/**************BEGIN************/
int boatSum = 0;
for (int i = 0; i < ferry.length; i++) {
for (int j = 0; j < ferry[i].length; j++) {
if(ferry[i][j]=='+') {
for (int j2 = i+1; j2 < ferry.length; j2++) {//竖着搜
if(ferry[j2][j]=='o') {
break;
}else {
ferry[j2][j]='o';
}
}
int j2;
for (j2 = j+1; j2 < ferry[i].length; j2++) {//横着搜
if(ferry[i][j2]=='o') {
break;
}
}
boatSum++;
j = j2-1;
}
}
}
/***********END ***************/
return boatSum;
}
}