Leetcode962 最大寬度坡

2021-09-05 08:53:25 字數 1056 閱讀 7156

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...