每日一结
901. 股票价格跨度
需要求出不超过当前股票价格的天数;
设置两个栈;
一个存储价格:
是一个单调栈,因为如果今天的价格比之前的高,那么之前的价格对后续不会产生影响;
所以:
while(!prices.isEmpty() && prices.peekLast() <= price) {//"<="
prices.removeLast();
w += day.removeLast();
}
另一个栈存储当前价格的答案;
如果明天的价格比今天的大,那么他的答案也应该加上今天价格的答案;
剑指 Offer 29. 顺时针打印矩阵
设置四个变量, 使得遍历可以层层递进;
在遍历最底层和最左层的时候,需要判断:if(l < r && t < b) {
for(int i = r - 1; i > l; i--) {
ans[x++] = matrix[b][i];
}
for(int i = b; i > t; i--) {
ans[x++] = matrix[i][l];
}
}
因为可能没有这俩层;
剑指 Offer 31. 栈的压入、弹出序列
采用模拟的方法;
最后判断模拟栈是否为空即可;
一直在模拟栈中加入题目入栈序列;
同时判断此时的模拟栈的栈顶是否 == 题目出栈数组指针所指当前数字;
如果等于则出栈,且移动题目出栈数组指针;
for(int i = 0; i < pushed.length; i++) {
deque.addLast(pushed[i]);
while(!deque.isEmpty() && deque.peekLast() == popped[x]) {
deque.removeLast();
x++;
}
}
 
                    
                 
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号