题目
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思考
1、就是使用栈的思想
2、将值push进去,然后比较栈顶的元素
代码和注释
class Solution {
// 直接使用栈来完成
public boolean validateStackSequences(int[] pushed, int[] popped) {
// 定义一个栈
Stack<Integer> stack = new Stack<>();
int j = 0;
for (int elem : pushed) {
stack.push(elem);
// 这个思想就是一直去看栈顶部的值是不是和数组中的值一样
while (j < popped.length && !stack.isEmpty() && stack.peek() == popped[j]) {
stack.pop();
j++;
}
}
return j == popped.length;
// 我的思想就是一一放到数组中,然后一一pop出来比较普通人的想法
// // 将push中的元素入栈,
// for(int ele : pushed){
// stack.push(ele);
// }
// int size = stack.size();
// // pop出栈比较
// for(int i = 0; i < size; i++){
// if(!stack.isEmpty()){
// if(stack.pop() != popped[i]){
// return false;
// }
// }
// }
// return true;
}
}
总结
1、我的那个思路还是用一定问题
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/96151.html