版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41275621/article/details/82875085
挑战任务
根据每日气温
数组,请重新生成一个数组,新数组对应位置的是你需要再等待多久温度才会升高的天数。如果之后都不会升高,请用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]
范围内的整数。
输入:
34 35 33 25 44 45 46 17
输出:
[1, 3, 2, 1, 1, 1, 0, 0]
开始挑战吧,祝你成功!
package step1;
public class Task {
public static int[] dailyTemps(Integer[] temperatures){
int len = temperatures.length;
int[] temps = new int[len];
int maxID = 0;//直接找到最大数的位置
for(int i = 0 ; i < len ; i++) {
for(int j = i+1 ; j < len ; j++) {
if(temperatures[i] < temperatures[j]) {
maxID = j;
break;
}
}
int reslut = maxID-i;//直接用最大数的位置减去现在的位置
if(reslut < 0) {
reslut = 0;
}
temps[i] = reslut;
}
return temps;
}
}