1. 程式人生 > >判斷是否出棧的順序滿足入棧順序-Java

判斷是否出棧的順序滿足入棧順序-Java

傳入兩個陣列,一個代表入棧順序,一個代表出站順序,返回一個boolean值表示這個出棧順序是否滿足入棧順序。
比如:

傳入:
12345
43512
返回:
false

按理來說這是一道非常簡單的題,但是我還是用了至少半個小時的時候作答,就是因為一邊想一邊寫,這是非常不好的習慣,可能一定要先把所有的思路理清,然後再開始寫,至少要先寫一個虛擬碼

思路是模擬入棧出棧的過程

import java.util.*;

public class Solution {
    public boolean IsPopOrder(int [] pushA,int [] popA) {   
        // 模擬退棧是醉猴的
// 獲得序列長度 int size = pushA.length; // 首先把pushA的東西都入棧 Stack<Integer> stack = new Stack<>(); // index 表示目前出棧到哪裡了 int index_pop = 0; // 核心程式碼 for(int i=0;i<size;i++){ stack.push(pushA[i]); while(!stack.empty() && stack.peek() == popA[index_pop]){ index_pop++; stack.pop(); } } return
stack.empty(); } }

相關推薦

判斷是否順序滿足順序-Java

傳入兩個陣列,一個代表入棧順序,一個代表出站順序,返回一個boolean值表示這個出棧順序是否滿足入棧順序。 比如: 傳入: 12345 43512 返回: false 按理來說這是一道非常簡單的題,但是我還是用了至少半個

判斷給定序列是否是對應序列的序列(C++)

題目: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。 (假設壓入棧的所有數字均不相等) 如 序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓

實現:、取最小元素的時間複雜度都是O(1)。

場景: 實現一個棧,帶有出棧(pop),入棧(push),取最小元素(getMin)三個方法。要保證這三個方法的時間複雜度都是O(1)。 方法一: 設兩個棧A/B,A:存放原始資料,B:棧頂為最

操作包括,清空,銷燬

#include<malloc.h> #include<string.h> #include<stdio.h> #define OVERFLOW -1 #define STACK_INIT_SIZE 10 #define

51微控制器的模擬(模擬/可重)

51微控制器的模擬棧(模擬棧/可重入棧) 51微控制器的模擬棧(又叫模擬棧、或者可重入棧)。 首先來看,51的系統棧(又叫系統棧,或者硬體棧),就是SP所指向的棧,他是一個滿增棧(註釋1),位於片內RAM的128 bytes之中,上電之後系統堆疊指標SP的初值等於多少呢?這個要從51

輸入兩個整數序列,第一個序列表示的壓順序,請判斷第二個序列是否為該的彈順序

ack pan back 表示 return i++ ++ 輸入 gpo 1 class Solution{ 2 public: 3 bool IsPopOrder(vector<int> pushV,vector<int> popV){

輸入兩個整數序列,第一個序列表示的壓入順序,請判斷第二個序列是否可能為該的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某的壓入順序,序列4,5,3,2,1是該壓序列對應

    輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應     import java

應用---元素順序的合法性判斷

利用棧來判斷元素出入棧順序的合法性 例如:入棧的序列(1,2,3,4,5),出棧序列為 (4,5,3,2,1) 解決思路如下: 我們設定一箇中間棧:tempStack,記錄一個出棧順序下標index 1、按入棧順序,存入一個元素到tempStack中 2、比較

判斷順序順序是否合理 python實現

前言 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否可能為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列,但4,3,5,1,2就不可能是該壓棧序

根據已知順序判斷一個數組是否是順序

題目含義已經很明確了,現在開始使用一個樣例輸入和輸出 int a[]={1,2,3,4,5};//原始的入棧順序 int b[]={4,5,3,1,2};//出棧順序 int b1[]={4,5,3,2,1};//出棧順序 我的策略是依次遍歷給定的出棧順序陣列,從第一個開始

給定順序判斷順序是否合法

給定一個入棧順序,判斷出棧順序是否有可能發生,所遵循的方法是使用一個輔助棧記錄入棧的元素,當剛開始時候輔助棧為空,入棧元素第一個壓入輔助棧,接下來如果看出棧順序,如果出棧順序的第一個元素和輔助棧的棧頂元素不相等,則繼續把 入棧元素的下一個壓入輔助棧;如果出棧順序

JAVA順序操作——初始化、判斷判斷滿

順序棧:使用一組連續的記憶體依次儲存棧中的資料,定義一個top變數來儲存棧頂序號。 棧結構是“後進先出”的原則。 棧的最基本操作有兩個:push(入棧) + pop(出棧) import java.util.Scanner; /** * @author Lily

輸入兩個整數序列,第一個序列表示的壓入順序,請判斷第二個序列是否為該的彈出順序。假設壓入棧的所有數字均不相等。例如序列12345是某的壓入順序,序列45321為該壓序列對應彈出順序

思路:借用一個輔助的棧,遍歷壓棧順序,先講第一個放入棧中,這裡是1,然後判斷棧頂元素是不是出棧順序的第一個元素,這裡是4,很顯然1≠4,所以我們繼續壓棧,直到相等以後開始出棧,出棧一個元素,則將出棧順序向後移動一位,直到不相等,這樣迴圈等壓棧順序遍歷完成,如果輔助棧還不為空

劍指offer-根據順序判斷順序是否正確

bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.empty())

根據順序判斷順序的合法性

這道題不管是面試還是筆試的選擇題都非常愛出的一道題 題目描述: 輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設壓入棧的所有數字均不相等。例如序列1,2,3,4,5是某棧的壓入順序,序列4,5,3,2,1是該壓棧序列對應的一個彈出序列

和佇列的面試題(五)---判斷元素順序的合法性

題目: 如:入棧的序列(1,2,3,4,5),出棧序列為 (4,5,3,2,1)是合法序列, 入棧的序列(1,2,3,4,5),出棧序列為(1,5,3,2,4)是不合法序列 一:判斷元素出

根據順序判斷序列正確與否

題目 描述: 題目標題:鐵路棧問題 鐵路的排程站如下: 火車編號為:1~9,且不重複。 如:編號分別為“1”、“2”、“3”、“4”、“5”的5個火車順序進站,那麼進站序列為“123

給定順序,輸出所有可能情況及所有情況的總數

一個長度為n的無重複序列入棧的所有出棧方式 例如1、2、3這三個數字,入棧並出棧共有5種方式,分別為:321、312、231、213、123。那麼對於長度為n的無重複序列中所有的出棧方式有哪些呢? 為了設計計算的演算法,我們可以用佇列(queue)來模擬輸入,佇列的輸出則按照原先序列的順序。

N個數依次順序有多少種

轉載:https://blog.csdn.net/u010255818/article/details/62044402 題目 N個數依次入棧,出棧順序有多少種? 直接公式 令h(0)=1,h(1)=1,卡特蘭數滿足遞推式:h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ..