单调栈
class Solution {
public int maxWidthRamp(int[] nums) {
int n = nums.length;
Deque<Integer> deque = new LinkedList<>();//单调递减栈
for(int i = 0; i < n;i++){
if(deque.size() == 0 || nums[deque.peekLast()] > nums[i])
deque.offerLast(i);
}
int ans = 0;
for(int i = n-1 ;i>=0;i--){
while(deque.size()!=0 && nums[deque.peekLast()] <= nums[i]){
ans = Math.max(ans,i-deque.pollLast());
}
}
return ans;
}
}
排序
class Solution {
public int maxWidthRamp(int[] nums) {
int n = nums.length;
Integer[] indexs = new Integer[n];
for(int i =0;i< n;i++){
indexs[i] = i;
}
Arrays.sort(indexs,new Comparator<Integer>(){
public int compare(Integer i1,Integer i2){
return nums[i1] - nums[i2];
}
});
int min = n;
int ans = 0;
for(int i =0; i < n;i++){
ans = Math.max(ans,indexs[i]-min);
min = Math.min(min,indexs[i]);
}
return ans;
}
}
版权声明:本文为qq_44822951原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。