amazon 出栈 进栈 序列 题目

基于Python的FAO农业数据高效爬取与分析实战:从Scrapy到异步爬虫的进阶之路 本文将详细介绍如何使用Python最新技术爬取联合国粮农组织(FAO)的农业数据,涵盖从基础爬虫到高级异步爬虫的完整实现过程。文章包含5000余字的技术解析,提供完整的代码示例,并探讨数据处理与存储的最佳实践。 阅读详情
/* 
Question:
As you know, two operations of Stack are push and pop. Now give you two integer arrays, one is the original array before
push and pop operations, the other one is the result array after a series of push and pop operations to the first array. Please
give the push and pop operation sequence.
For example:
If the original array is a[] = {1,2,3}, and the result array is b[] = {1,3,2}.
Then, the operation sequence is “push1|pop1|push2|push3|pop3|pop2”(operations are split by ‘|’ and no space).
Rules:
Time Remaining: 00:25:17
1.  The push and pop operations deal with the original int array from left to right.
2.  The input is two integer array. They are the original array and the result array. These interger array is split by space.
3.  The output is the operation sequence.
4.  If the original array cannot make to the result array with stack push and pop, The output should be 'None'.
5.  The operation "push1" means push the first element of the original array to the stack.
6.  The operation "pop1" means pop the first element of the original array from the stack, and add this element to the tail
of the result array.
7.  Please don't include any space in the output string.
Sample1: 
Input:
1 2 3 4
1 2 3 4
Output:
push1|pop1|push2|pop2|push3|pop3|push4|pop4
Sample2: 
Input:
1 2 3 4
4 3 2 1
Output:
push1|push2|push3|push4|pop4|pop3|pop2|pop1
 */

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <stack>

using namespace std;

char* calculateOperationSequence(int *originalArray, int *resultArray, int length);

inline bool isSpace(char x){
    return x == ' ' || x == '\r' || x == '\n' || x == '\r' || x == '\b' || x == '\t';
}

char * rightTrim(char *str){
    int len = strlen(str);
    while(--len>=0){
        if(isSpace(str[len])){
            str[len] = '\0';
        }else{
            break;
        }
    }
    return str;
}

char * getInputLine(char *buffer, int length){
    if(fgets(buffer,length, stdin)==NULL){
        return NULL;
    }
    rightTrim(buffer);
    if(strlen(buffer)<=0){
        return NULL;
    }
    return buffer;
}

int splitAndConvert(char* strings, int *array){
    char* tokenPtr = strtok(strings," ");
    int i=0;
    while(tokenPtr != NULL){
        array[i] = atoi(tokenPtr);
        i++;
        tokenPtr=strtok(NULL," ");
    }
    return i;
}

int main(){
    char line[1000] = {0} ;
    while(getInputLine(line,1000)){
        int originalArray[30] = {0};
        int originalArrayLength = splitAndConvert(line,originalArray);
        if(originalArrayLength==0){
            break;
        }
        
    getInputLine(line, 1000);
    int resultArray[30] = {0};
        int resultArrayLength = splitAndConvert(line,resultArray);
        if(resultArrayLength==0){
            break;
        }
    char *operationSequence = calculateOperationSequence(originalArray, resultArray, resultArrayLength);

    if (NULL != operationSequence)
    {   // 原来系统提供的代码。这里没有NULL判断
        cout<< operationSequence <<endl;
        free(operationSequence); // 自己加的
    }
    else
     cout<< "None" <<endl; // 自己加的
    }
    return 0; 
} 

//your code is here  
//下面才是让写代码的地方,其他的系统已经自动给出。
char* calculateOperationSequence(int* originalArray, int* resultArray, int length) 
{ 
    if(NULL==originalArray || NULL==resultArray || length <= 0) {
        cout<<"None"<<endl;
        return NULL;
     }
    stack<int> mystack;
    int resultindex=0,origindex=0,index=0;
    char tmpstr[1000];
    string operations("");
    operations.append("push1");
    
    mystack.push(originalArray[origindex++]);

    while( resultindex < length){
        if(mystack.empty() && origindex < length){
           operations.append("|push");
            sprintf(tmpstr,"%d",(origindex+1));
            operations.append(tmpstr);
            mystack.push(originalArray[origindex++]);
        }
        
      if(mystack.top() == resultArray[resultindex]) {
          operations.append("|pop");
          
          //find which number in original array is popped up. 
          for(index=0; index<length; index++){
              if(mystack.top()==originalArray[index])
                  break;
          }
          sprintf(tmpstr,"%d",(index+1));
          operations.append(tmpstr);
          mystack.pop(); 
          resultindex++;
      }
      else { if(origindex < length) {
             operations.append("|push");
             sprintf(tmpstr,"%d",(origindex+1));
             operations.append(tmpstr);
             mystack.push(originalArray[origindex++]);
             }
            else {
             //top number in stack != result number but all elements in original have been pushed into stack already
             //mismatch now
             break;
            }
       }
    }       
    char *ptr=NULL;
    if(! mystack.empty()) {
        //mismatch
      ptr=new char[10];
      strcpy(ptr,"None");
    }
    else {
      ptr=new char[operations.length()+1];
      strcpy(ptr,operations.c_str());
    }
    return ptr;
}

OpenClaw 超级 AI 实战专栏【实战案例】(五)邮件收发 + 日历日程 + 文件管理一站式搞定 OpenClaw 实现办公自动化核心是模块解耦:邮件收发、文件管理、日历日程各自封装,便于维护和扩展;开发中需重点解决编码兼容、权限配置、时间格式、重复处理四大类坑点,核心思路是 “提前校验 + 异常兜底 + 统一格式”;敏感信息(邮箱密码、API Token)务必通过.env管理,避免硬编码泄露。 阅读详情

相关推荐

【ISAR成像定标方法(1)—转台目标的RD成像算法MATLAB仿真】

ISAR成像定标方法的研究具有重要意义,但是与之相关的学习资料以及仿真对于小白来说很难找或者很杂乱,本人作为小白之一在研究过程中苦不堪言,现在自己所要研究的定标内容已经完成,以后还学不学雷达也不一定,因为后面的路更难,现在打算把一些相关推导和仿真结果列出来,以供小白交流学习使用,希望能有点帮助。(PS:由于公式和符号的原因,采用图片形式说明)

此木旧年的博客 6416

出入栈顺序解析

在笔试堆栈知识点中通常会考一道典型的出入栈题型,格式为: 已知按照0,1,2...9的顺序入栈,则下面哪个不能为出栈顺序?下面来进行分析。 入栈顺序:0,1,2,3,4,5,6,7,8,9 出栈情况分析:假如数字5出栈,则代表数字0,1,2,3,4肯定已经入栈,因为5只有入栈了才能出栈。 此时0,1,2,3,4是否已经出栈了呢?我们不清楚,可能其中部分已经出栈。下面来例举几种情况。 ca...

风之云的博客 6603

下载Python3.10的相关方法及问题解决

下载Python3.10的相关方法及问题解决 报错unable to locate package python3.10-dev以及subprocess.CalledProcessError: Command ‘(‘lsb_release‘, ‘-a‘)‘ returned non-zero exit status 1问题解决

Istil 1555

关于出栈入栈顺序面试题

一个栈的入栈序列式为54321,请选出以下不可能的出栈序列(D) A.23451 B.45123 C.45321 D.23154 解题思路:先进后出,后进先出,可以把栈想成一个竖着的桶,先放进去的被压在最底下,所以要最后出来,后放进去的在最上面,要...

chumuzhi8647的博客 5924

ITK-snap医学图像标注方法(超级详细)——保姆级

医学3D图像标注方法,非常详细,保姆级

jialiyk的博客 3万+

Dirsearch的下载、安装和使用(全)

Dirsearch工具的下载、安装和使用,超详细超全面

weixin_68416970的博客 1万+

(Java)数据结构之栈(Stack) ,附有三个栈相关OJ题目和对应做法(括号匹配,逆波兰表达式求值,出栈入栈次序匹配)

1. 栈的概念 栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,进行数据插入和删除的一端为栈顶,另一端为栈底。栈中的元素遵循后进先出(LIFO)(Last In First Out)的原则。 压栈:栈的插入数据操作叫做进栈,压栈,入栈。入数据在栈顶 出栈:栈的删除操作叫做出栈。出数据在栈顶 2. 栈的使用 方法 功能说明 Stack() 构造一个空栈 E push(E e) 将e入栈并返回e E pop() 将栈顶元素出栈并返回 E peek

X_H学Java的博客 1643

OP-TEE虚拟化支持详解

OP-TEE虚拟化支持解析 OP-TEE提供实验性虚拟化方案,支持多虚拟机共享安全执行环境。核心特性包括: 配置选项:CFG_VIRTUALIZATION启用虚拟化,CFG_VIRT_GUEST_COUNT限制虚拟机数量并分配均等内存资源; Hypervisor协作:需实现虚拟机生命周期通知、SMC参数转换、内存固定等关键协议; 当前限制:仅支持Armv8架构,硬件资源共享有限,采用静态内存配额机制; 架构实现:通过MMU分区切换和扩展内存分配器实现多租户隔离,Nexus核心层管理虚拟机上下文。该方案适用于

Linux内核架构师 109

栈的经典例题—数据结构

栈的习题

m0_61963422的博客 1937

BoT-SORT实战:手把手教你实现BoT-SORT训练和测试

文章目录摘要1、数据准备2、配置BoT-SORT环境2.1、获取代码2.2、创建虚拟环境2.3、安装必要的包2.3.1、安装pytorch2.3.2、安装cython2.3.3、安装Cython-bbox2.3.4、安装faiss2.3.5、安装其他的包3、训练3.1、生成REID数据集3.2、预训练模型3.2.1、ByteTrack预训练模型3.2.2、REID预训练模型3.3、开始训练4、如何更改FASTREID的BackBone?5、测试5.1、测试视频5.2、测试摄像头5.3、多类别测试 摘要 Bo

m0_47867638的博客 2298

Python OpenCV教程从入门到精通的全面指南【文末送书】

全书共分为16章,包括Python与OpenCV、搭建开发环境、图像处理的基本操作、像素的操作、色彩空间与通道、绘制图形和文字、图像的几何变换、图像的阈值处理、图像的运算、模板匹配、滤波器、腐蚀与膨胀、图形检测、视频处理、人脸检测和人脸识别以及MR智能视频打卡系统。主流技术,全面覆盖:本书内容丰富,涵盖了Open CV图像处理技术的方方面面,如图像的几何变换、阈值处理、图像运算、模板匹配、滤波器、腐蚀与膨胀、图形检测、视频处理、人脸检测和人脸识别等。此外,通过对比原图,可更直观地看到图像经过处理后的效果。

一键难忘的博客 9075

栈的定义与部分习题讲解

栈 一、栈的定义 ​ 栈是一种只能在一端进行插入和删除操作的线性表,表中只允许进行插入和删除操作的一端称为栈顶。栈顶的当前位置是动态的,栈顶的当前位置是由一个成为栈顶指针的位置指示器来指示。表的另一端称为栈底。当栈中没有元素时,称为空栈,栈的插入操作称为进栈或入栈,栈的删除操作称为出栈或退栈。 如下图时队元素的进栈和出栈操作: 二、栈的特点 ​ 栈的主要特点是 “ 后进先出 ”,即后进栈的元素先出栈。栈也被称为后进先出表 三、栈的存储结构 栈有两种主要的存储结构,即顺序栈和链栈。前者采用顺序存储结构表

weixin_56169816的博客 1251

RT-DETR改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性

Bw−wgt2h−hgt2weight2Bweight2w−wgt​2h−hgt​2​其中weight2weight = 2weight2。

Limiiiing的博客 1544

根据栈的入栈序列和出栈序列,打印push和pop的顺序-Amazon笔试题

该题目是Amazon的在线技术笔试的题目: 直接上代码吧,代码中有说明。只要我们实现calculateOperationSequence()方法就可以了 package amazon2; /* Enter your code here. Read input from STDIN. Print output to STDOUT */ import java.util.*; impor

zhimajiejie的专栏 1844

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

进栈出栈问题

一个栈的输入序列为 1 2 3 4 5, 则下列序列中不可能是栈输出的序列的是 (A) A. 5 4 1 3 2 B. 2 3 4 1 5 C. 1 5 4 3 2 D. 2 3 1 4 5 解题思路:栈的输入序列为 1 2 3 4 5,期间输入的时候同时可以出栈,对于B.2 3 4 1 5 首先 1 进栈,2 进栈+出栈, 3 进栈+出栈 ,4 进栈+出栈 , 1出栈 ,5 进栈+出栈...

91奔跑的蜗牛 4764

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

栈的相关题目以及出栈时的规律

今天做了两个有关栈的题目,都需要用到出栈时的规律。 那么问题来了,出栈时的规律时什么呢?

qq_62767608的博客 2436

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[编程题]: 入栈出栈序列

[编程题]: 入栈出栈序列 题目描述 输入n,入栈序列为[1, 2, …, n] 求所有可能的出栈序列 结题思路 给定包含n个数的入栈序列,出栈序列的可能情况根据卡特兰公式有 种。 对这n个数,得到它们的全排列,每得到一个全排列对其进行判断,看是否能成为一个合法的出栈序列。 示例 n = 4 那么入栈序列为 [1, 2, 3, 4] 可能的出栈序列为: [1, 2, 3, 4], [1, 2, 4, 3], [1, 3, 2, 4], [1, 3, 4, 2], [1, 4, 3, 2], [2, 1,

qq_27198345的博客 1949

【数据结构】--栈的实现和多种例题

数据结构栈的概念,栈的实现,栈的几道经典面试题的详细讲解!

m0_74044018的博客 1305

数据结构的一道题

偶然看到的一个小题,差点被忽略了,题目大概是这样的: a,b,c,三个元素依次入栈,问有多少种出栈顺序? 意思是入栈的顺序必须是a,b,c,我是这样想的,分三种情况, 1:a先出栈,即a入栈后就出栈,然后可以b入栈,出栈,c入栈,出栈, 那么出栈顺序就是a,b,c; 或者b入栈,c入栈,c出栈,b出栈,顺序为a,c,b 2:b先出栈,出栈顺序可以是b,c,a和b,a,

那又怎样的博客 1517

高考数据结构题—入栈出栈

2 3 1 为 (1 (2 3)), 将23视为整体 倒位。原理:大出栈=>小在栈里 因为后进先出,因此由大至小出栈。1 3 2 为 (2 3)连续入栈出栈(1100)倒位。2 1 3 为 (1 2)连续入栈出栈(1100)倒位。3 2 1 为 (1 2 3),(111000)【例题】1、2、3、4四个元素依次入栈,求出栈序列。举一例说明:1 2 3 -->1 3 2。11010010……·入栈序列到出栈序列的变化本质为“倒位”·求出栈序列的本质是求操作序列。可以方便地求出总可能数。以1指入栈,0指出栈。

beglad的博客 447

[算法图解] 深入浅出:ABCD顺序入栈,有多少种出栈顺序?(暴力枚举+卡特兰数)

在数据结构与算法的面试中,“栈的压入、弹出序列”是一道非常经典的题目。本文将以 A, B, C, D 四个元素为例,通过两种不同的思维视角(位置分类法 vs 首元素分类法)详细拆解这 14 种出栈情况,并引出著名的卡特兰数(Catalan Number)通项公式。无论你是初学者还是算法老手,这篇文章都能让你豁然开朗。

2301_79904715的博客 1203

作业7-栈及其应用(防止题目重复)

1-1 通过对堆栈S操作:Push(S,1), Push(S,2), Pop(S), Push(S,3), Pop(S), Pop(S)。输出的序列为:123。(F) [解析]输出序列为231 1-2 若一个栈的输入序列为1,2,3,…,N,输出序列的第一个元素是i, 则第j个输出元素是j−i−1。() [解析]查到的一个看法是不确定,但是这是判断题… https://blog.youkuaiyun.com/qq_46088286/article/details/106633024 1-3 若一个栈的输入序列为{1,

qq_45591813的博客 3899

JS数据结构---栈结构基础面试题(进栈出栈问题)

首先我们了解一下 栈结构 出栈 进栈 原则 先进后出 答案 C 本题考查 栈结构原则 — 先进后出 A选项 5出栈 先 栈底6-5栈顶 后 栈底 6 4出栈 先 栈底6-4栈顶 后 栈底 6 3出栈 先 栈底6-3栈顶 后 栈底 6 6出栈 先 栈底6 后 栈底 null 1出栈 先 栈底2-1栈顶 后 栈底2 2出栈 B选项 4 5 3 2 1 6 4出栈 先 栈底6-5-4栈顶 后 栈底 6-5栈顶 5出栈 先 栈底6-5栈顶

梦想待招前端实习生 的博客 736

【算法专题--栈】栈的压入、弹出序列 -- 高频面试题(图文详解,小白一看就懂!!)

栈的压入、弹出序列这道题,可以说是--栈专题--,最经典的一道题,也是在面试中频率最高的一道题目,通常在面试中,面试官可能会从多个方面考察这道题目,所以大家需要对这道题目非常熟悉哦!!

weixin_45031801的博客 1062

结合实例理解栈的入栈序列1,2,3,4,5,则栈的输出序列是()问题

理解一个栈的入栈序列 1,2,3,4,5,栈输出序列问题 数据结构——栈问题 如何理解这种序列问题呢?且看下文: 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。(参考:百度百科) 怎么理解栈顶 栈底? 把栈看做一个箱子,依次放入五本书,依次为甲乙丙丁戊 简要理解: 栈顶为最后进的元素,也就是最后放的戊书 栈底为最先进的元素,也就是最先放的甲书 栈的出栈原则? “后进先出”或者“先进后出” 结合例子加以理解: 假如将入

Code_流苏:在代码中寻诗意,在实践中觅真知 2万+

栈与队列-之出栈和入栈

栈的基本概念,以及出栈和入栈的对应顺序分析

qq_41542141的博客 8536
上一篇: 2014 amazon 在线 面试题目 爬山问题:打印出从A点到B点的距离
下一篇: Amazon 笔试 :公共祖先 问题
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值