503.下一个更大元素II
题目链接:. - 力扣(LeetCode)
解题思路:注意一下循环就行
java:
class Solution {
public int[] nextGreaterElements(int[] nums) {
int res[]=new int[nums.length];
Deque<Integer> stack=new LinkedList<>();
Arrays.fill(res,-1);
for(int i=0;i<nums.length*2;i++){
while(!stack.isEmpty()&&nums[i%nums.length]>nums[stack.peek()]){
res[stack.pop()]=nums[i%nums.length];
}
stack.push(i%nums.length);
}
return res;
}
}
42. 接雨水
题目链接:. - 力扣(LeetCode)
解题思路:要比较左右两边大的
java:
class Solution {
public int trap(int[] height) {
if(height.length<=2) return 0;
int sum=0;
Deque<Integer> stack=new LinkedList<>();
stack.push(0);
for(int i=1;i<height.length;i++){
while(!stack.isEmpty()&&height[i]>height[stack.peek()]){
int mid=stack.pop();
if(!stack.isEmpty()){
int left=stack.peek();
sum+=(Math.min(height[i],height[left])-height[mid])*(i-left-1);
}
}
stack.push(i);
}
return sum;
}
}