队列和栈的基本算法题

一.栈

思路:创建一个栈存放温度数组的元素下标在创建一个数组放答案,只要在i天之后温度高了就将栈顶元素弹出栈,并保存栈顶元素赋值到答案数组

思路: 这题没有什么难的,但是由这题联想到剑指 Offer 30. 包含min函数的栈 - 力扣(LeetCode)

class MinStack { 
Stack<Integer> stack1 = new Stack(); 
Stack<Integer> stack2 = new Stack();
 /** initialize your data structure here. */
 public MinStack() { }public void push(int x) { stack1.push(x);
 if(stack2.isEmpty()){ stack2.push(x);
 }else{if(x<=stack2.peek()){
stack2.push(x); } } }
public void pop() { if(stack2.peek()==stack1.peek()){ stack2.pop(); stack1.pop(); }else{stack1.pop(); } }
public int top() { return stack1.peek(); }
public int min() { return stack2.peek(); } }

在用Java创建Stack并用Integer泛型的时候出现了栈溢出的情况。通过查阅资料发现是因为Integer的范围是-127~128,超过这个范围为new一个新对象,而==比较的是地址而非内容,所以这题要将“==”改为equals()方法

二.队列

思路:由题意,找到一个1先将其设置为0并计数 之后将其上下左右都设置为0(因为岛是可以连接起来的)   如何实现上下设置为0:将为1的坐标保存起来放入队列中。由于队列只能存放一个数子,可以使用S1:“行坐标*列数量+列坐标”这样其行坐标就是用s1除列数量 行坐标就是对S1取模

用到了广度优先搜索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值