class
solution
res = math.
max(res, j-i);}
return res;
}}
這個思路很簡單,也是我第一開始想到的,沒有優化的思路,不過也可以通過測試,思路是:遍歷陣列,每次從右邊找到第乙個大於等於a[i]的索引j然後每次遍歷更新最大的j-i,最後將結果返回就可以了。
該思路可以優化,因為遍歷時候i是逐漸增大的,所以如果我從後面找到乙個索引j滿足要求,我可以講這個j記錄下來,然後遍歷i後面的數時候,j只需要走到上次記錄的j的位置就可以了。
舉個例子[3,7,6,4,8,5,2],i指向3,j指向5,是第一次遍歷,那麼在i指向下乙個位置7時候,j只需要從後遍歷最多到5就可以了,因為再往下遍歷肯定會比上一次得到的寬度小。
class
solution
maxj = math.
max(maxj, j)
;//下一次到maxj就可以break;
res = math.
max(res, j-i)
;//最終結果。
}return res;
}}
class
solution
maxr[n -1]
= a[n -1]
;for
(j = n -
2; j >=
0; j--
) i =
0; j =0;
while
(i < n && j < n)
else
}return max;
}}
LeetCode962 最大寬度坡
題目的意思就是找到兩個隔的距離最遠的兩個數,要求這兩個數後面的要大於等於前面的,返回那個最遠的距離。這道題我一開始直接用的暴力,時間複雜度到n方,會超時。暴力其實也不是不可以通過,但是要注意剪枝吖,要注意剪枝注意剪枝,純粹的暴力當然會超時吖。一定要注意剪枝哦。大致過程 第乙個數到最後乙個數,先迭代一...
leetcode962 最大寬度坡
給定乙個整數陣列 a,坡是元組 i,j 其中 i j 且 a i a j 這樣的坡的寬度為 j i。找出 a 中的坡的最大寬度,如果不存在,返回 0 示例 1 輸入 6,0,8,2,1,5 輸出 4 解釋 最大寬度的坡為 i,j 1,5 a 1 0 且 a 5 5.對於每乙個形如 a i v 的元素...
962 最大寬度坡
962.最大寬度坡 超時解法1 class solution 找出最大坡度 for auto i count.begin i count.end i return slope int check pair int,pair int,int tmp,vector int a for int j tmp...