class Solution {
public int[] dailyTemperatures(int[] T) {
int length = T.length;
int[] result = new int[length];
//从右向左遍历
for (int i = length - 2; i >= 0; i--) {
// j+= result[j]是利用已经有的结果进行跳跃
for (int j = i + 1; j < length; j+= result[j]) {
if (T[j] > T[i]) {
result[i] = j - i;
break;
} else if (result[j] == 0) { //遇到0表示后面不会有更大的值,那当然当前值就应该也为0
result[i] = 0;
break;
}
}
}
return result;
}
}
func dailyTemperatures(T []int) []int {
length := len(T)
stack := make([]int,length)
for i:= length -2 ;i >= 0;i--{
for m:= i+1; m <= length; m += stack[m] {
if T[m] > T[i] {
stack[i] = m - i
break
}
if stack[m] == 0 {
break
}
}
}
return stack
}
使用了动态规划的思想 可以看到拍同一个算法 java 只要4ms 应该是 Go 的 切片 比起java的 数组 速度上 要慢很多 .