首页 > TAG信息列表 > stack1

Java编码错误 - java.lang.NumberFormatException: For input string: ")"

代码目的:解决表达式求值 请写一个整数计算器,支持加减乘三种运算和括号。 数据范围:0\le |s| \le 1000≤∣s∣≤100,保证计算结果始终在整型范围内 要求:空间复杂度: O(n)O(n),时间复杂度 O(n)O(n) 示例1 输入: "1+2" 返回值:3 错误代码 public int solve (String s) {

Java算法: 用两个栈实现队列

问题 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead , 分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素, deleteHead 操作返回 -1 ) 解决 class CQueue { Stack<Integer> stack1; Stack<Integer> stack

【剑指 Offer09】用两个栈实现队列

/** * 剑指 Offer 09. 用两个栈实现队列 * https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/ * */ public class CQueue { private Deque<Integer> stack1; private Deque<Integer> stack2; public CQueue() { stack1 = ne

力扣简232 用栈实现队列

栈队列等的定义,一不用就忘,我无语!而且栈用push和pop,用别的会搞乱! 1 class MyQueue { 2 3 Deque<Integer> stack1; 4 Deque<Integer> stack2; 5 6 public MyQueue() { 7 stack1=new LinkedList<Integer>(); 8 stack2=new LinkedList&l

招行提前批笔试

第一题:1-n个人排队,现在站队为数组num1;每个人都可以往左走任意个位置,问最小需要走几个人,可以走成目标数组的样子来拍照? 例子:6 4 6 3 2 1 5 4 2 3 5 6 1 输出3次; 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 int length; 5 cin>> length;

两个栈实现队列

class CQueue {public: stack<int> stack1; stack<int> stack2; CQueue() {} void appendTail(int value) { stack1.push(value); } int deleteHead() { if (stack1.empty()) return -1; while (!stack1.empty()){ //

stack

#include<bits/stdc++.h> using namespace std; class node { public: int data; node* next; node* prev; }; class stack1 { public: stack1(); void push(node* &temp, int data); void pop(node* &temp); void show(node* &a

剑指 Offer 09. 用两个栈实现队列---java

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","deleteHead","deleteHead"] [[],[3],[],[]] 输出:[n

剑指offer-09用两个栈实现队列

题目 -->前往做题<-- 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入: ["CQueue","appendTail","deleteHead","deleteHead"] [

两个栈实现一个队列

使用两个栈实现一个队列,实现添加方法appendData,实现删除对头元素方法deleteData,实现查看对头元素headData方法 思路:栈是现金后出的数据结构,队列是先进先出的数据结构。可以使用第一个栈存入数据实现appendData。需要删除或者查看队头元素时,如果第二个栈为空,把第一个栈的数据

用两个栈实现队列

剑指offer——09题 使用两个函数appengTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能,若队列中没有元素,deleteHead操作返回-1. 要求 输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”] 这一行表示每一行代码的操作 [[],[3],[],[]] 这

《剑指Offer》09-用两个栈实现队列

理解题意 本题最难的就是理解题啥意思: 本来理解的就对,但看了一眼解析直接跑到了外太空; 咱们来看题中给的示例: 输入: ["CQueue","appendTail","deleteHead","deleteHead"] [[],[3],[],[]] 输出:[null,null,3,-1] 输入: ["CQueue","deleteHead","appendTail&quo

剑指offer#30

题目如下 这道题要求min(),push(),pop()的时间复杂度都是O(1),只用一个栈是实现不了的,为什么?栈的最明显的特点就是:最后进去的元素最新出来。用一个栈的话,每次都要确保最小的元素在栈顶,但最后进栈的元素不保证都是最小的,所以用一个栈就实现不了。本题要求的时间复杂度的最优,那可以

剑指 Offer 09. 用两个栈实现队列

剑指 Offer 09. 用两个栈实现队列 思路比较好想到,可以先用一个栈全部存储入队元素,设这个栈为\(stack1\),需要出栈时,判断另一个栈是否空,若为空,且\(stack1\)不为空,则说明可以从刚才入队的元素出队,于是\(stack1\)的元素转移到\(stack2\),并将\(stack2\)弹栈,这样的过程使得最先入栈的元

剑指offer#9

啥也不说,先上图 一道不难的题,竟然花费我那么长时间......利用俩个栈去实现一个队列 就是利用栈的本质:先进后出(可以举一反二,用两个队列实现一个栈) 我在写的时候,感觉有点走老路了,困惑C++的语法 class CQueue { public: stack<int>stack1; stack<int>stack2; CQueue() {

newcoder-用两个栈实现队列

这里的编程实现使用的是类C代码-即仅使用C++的STL库 这道题的主要思路就是 想象如何将两个栈拼接成一个队列(即如何将两个FILO变为FIFO) 其实核心就是一个栈用于存储,另外一个栈用于将其转换成队列然后再逐个弹出即可。 有一个坑是你必须保证每一次pop必须先确保stack2中所有的

数据结构实现相关

232. Implement Queue using Stacks Easy Implement a first in first out (FIFO) queue using only two stacks. The implemented queue should support all the functions of a normal queue (push, peek, pop, and empty). Implement the MyQueue class: void push

leetcode刷题-剑指offer-30题

leetcode刷题-剑指offer-30题 题目 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 示例: MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStac

剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )   示例 1: 输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[

Java两个栈实现队列

题目来自《剑指offer》 用两个栈实现一个队列,实现尾插和头删的功能。 基于两个数据结构的特点,不难思考出两者的交互方式。 下面以一张图说明:  代码实现 static final Stack<Integer> stack1 = new Stack<>(); static final Stack<Integer> stack2 = new Stack<>();

20.有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 解题思路(自):利用栈,但是重点在怎么辨别是同一对括号。 我利用括号的ASCII码(28 )29 {123}125 [91]93之间的差小于等于2,

用两个栈实现队列

描述 用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。 数据范围:n≤1000要求:存储n个元素的空间复杂度为 O(n) ,插入与删除的时间复杂度都是 O(1)

232. 用栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空,返回 true ;否则,返

java 中 pop 和 peek 方法区别

相同点:都返回栈顶的值。 不同点:peek 不改变栈的值(不删除栈顶的值),pop会把栈顶的值删除。 下面通过代码展现 /* * 文 件 名: TestPeekAndPopDiff.java */ import java.util.List; import java.util.Stack; /** * @author * @since */ public class TestPeekAndPopDiff

Day1:剑指 Offer 30. 包含min函数的栈

题目链接 题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。 class MinStack { //stack1负责添加元素,stack2负责维护当前最小的元素 Deque<Integer> stack1; Deque<Integer> stac