本文共 984 字,大约阅读时间需要 3 分钟。
给定一个整数数组 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.
示例 2:输入:[9,8,1,0,1,9,4,0,4,1] 输出:7 解释: 最大宽度的坡为 (i, j) = (2, 9): A[2] = 1 且 A[9] = 1.
提示:
2 <= A.length <= 50000
0 <= A[i] <= 50000
思路,第一次错误理解了题目以上,理解成了i后面的比它大的数据的个数。这里使用mutiset进行排序,然后从头到后进行分析,统计这个元素i后面元素的个数。同时删除这个元素。
代码为
class Solution {public: int maxWidthRamp(vector & A) { multiset si; multiset ::iterator it; int n=A.size(); for(int i=0;i
上述主要erase的用法,在mutiset中,如果删除rease(value)是删除所有的=value的。删除某个用法是si.erase(it)
正确的代码
记下数组的元素的位置,然后进行排序,排序后某个元素所在的位置之前的肯定比在它前面的元素小,所以只要找出比它小的原标号最小的即可。
class Solution { public: typedef struct { int x; ind id; } Node; static bool cmp(Node a,Node b) { if(a.x==b.x) return a.id
转载地址:http://qpki.baihongyu.com/