每日一结

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++;
}
}

posted on 2022-10-21 17:22  xtdnn  阅读(12)  评论(0)    收藏  举报

导航