739.毎日の気温
毎日の気温を表す整数の配列温度を指定すると、配列の回答を返します。ここで、answer[i] は、i 日目に次に高い気温が発生するまでの日数を指します。この時間を過ぎても温度が上昇しないと予想される場合は、この位置を 0 に置き換えます。
例 1:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
例 2:
输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]
例 3:
输入: temperatures = [30,60,90]
输出: [1,1,0]
ヒント:
- 1 <= 温度.長さ <= 10^5
- 30 <= 温度[i] <= 100
答えのアイデア:
- 現在の要素に現在位置より大きい後続要素があるかどうかを確認するには、2 層の for ループを設定します。現在位置より大きい最初の後続要素を検索するだけです。
- 次に、配列内の 2 つの要素間の添字の差を現在の添字位置に割り当てます。
- 配列を走査した結果、現在の要素より大きい後続の要素が存在しない場合は、現在の位置の要素を 0 に設定するだけです (ここではフラグを使用して判断します)。
class Solution {
public int[] dailyTemperatures(int[] temperatures) {
int i,j;
boolean flag;
for(i=0;i<temperatures.length;i++){
flag=false;//判断后续是否存在有大于当前元素的值
for(j=i+1;j<temperatures.length;j++){
if(temperatures[i]<temperatures[j]){
//若其后面存在大于当前元素的值
temperatures[i]=j-i;//将当前元素设置为其二者的下标差;
flag=true; //存在大于当前元素的值
break; //找到第一个就退出循环
}
}
if(flag!= true){
//如果遍历完数组都没有找到大于当前元素的值
temperatures[i]=0;//将当前位置置为0
}
}
return temperatures;
}
}