739. 每日溫度 Daily Temperatures

題目 https://leetcode-cn.com/problems/daily-temperatures/

int* dailyTemperatures(int* T, int TSize, int* returnSize){
	*returnSize = TSize;
	int *n = malloc(sizeof(int) * TSize);
	n[TSize-1] = 0;
	int i,j;
	for(i = TSize-2;i>=0;i--){
		if(T[i]>=T[i+1]){//如果i天的溫度比i+1天的溫度高或相等
			//從下一個地方開始, 跳轉, 越界j>=TSize, 找到更大的T[j]>T[i], 沒有更大的n[j]==0
			for(j=i+1;j<TSize && T[j]<=T[i] && n[j] != 0;j += n[j]){}
			if(j >= TSize){//越界
				n[i] = 0;
			}else if(T[j] > T[i]){//跳轉到比原來的大
				n[i] = j-i;
			}else{//跳轉的地方已經沒有更大的
				n[i] = 0;
			}
		}
		else{//如果i天的溫度比i+1天的溫度低
			n[i] = 1;
		}
	}
	return n;
}

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章