leetcode第739 题

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的 数组 速度上 要慢很多 .

发布了67 篇原创文章 · 获赞 5 · 访问量 3163

猜你喜欢

转载自blog.csdn.net/weixin_41315492/article/details/103847722
今日推荐