zoukankan      html  css  js  c++  java
  • [实战演练]Intel面试题目

    电话面试中写C++,逻辑比较清楚的一个题目,一紧张就不能好好地写下来,漏洞百出。以前经常在完善的编译环境中写代码,换了一个白板子上写反而写的不通顺了,犯了一些基础错误,比如stack中的首个元素是top方法,判断是否为空为empty方法,方法名字写错了……以后看来还是要勤加练习才好。废话不多说,直接看题目了。

    题目:两个数组,长度相同,都为n,两个数组分别为inseq和outseq,求出如果以inseq为入栈顺序,那么outseq可不可能是它的一个出栈顺序,可能则返回true

    样例:

    inseq = {1,2,3,4,5}  outseq={5,4,3,2,1} 返回true;

    inseq = {1,2,3,4,5}  outseq={4,3,2,1,5},返回true;

    inseq = {1,2,3,4,5} outseq={2,3,5,1,4},返回false。

    解题思路:模拟整个过程,挨个把inseq的数据放入栈中。直到栈顶元素和出栈序列outseq所指的元素相同,则一直出栈,并将outseq指针后移,直到栈顶元素和outseq指针所指的元素不一样了,则又开始进栈。每次循环中,要么进栈,要么出栈,总要有一个动作在执行,如果既没出栈也没进栈,一定出了什么问题,直接跳出循环,最后进行判断。代码如下:

     1 #include <iostream>
     2 #include <stack>
     3 using namespace std;
     4 
     5 bool islegal(int *inseq, int *outseq, int n){
     6     if(n==0) return true;
     7     if(n==1) return inseq[0]==outseq[0];
     8     stack<int> st;
     9     
    10     int i=0,j=0;
    11     
    12     bool flag = false; //用于确定每一个最外层while循环中有操作在执行,没有操作可以执行,则必然有违反的情况
    13     while(j<n){
    14         if((st.empty() || (st.top()!= outseq[j])) && i<n){//如果栈为空或者第一个元素不等于出栈序列第一个元素,且i<n,则进栈
    15             st.push(inseq[i]);
    16             i++;
    17             flag = true;
    18         }
    19         if(!st.empty() && st.top()== outseq[j] ){//如果栈不为空,并且第一个元素等于出栈序列第一个元素,则出栈
    20             st.pop();
    21             j++;
    22             flag = true;
    23         }
    24         if (!flag)
    25             break;
    26         else
    27             flag = false;
    28     }
    29     if(st.empty() && j==n && i==n)
    30         return true;
    31     
    32     return false; 
    33 }
    34 
    35 int main(){
    36     int a[] = {1,2,3,4,5};
    37     int b[] = {4,3,5,2,1};
    38     cout<<islegal(a,b,5);
    39     system("pause");
    40     return 0;
    41 }
  • 相关阅读:
    第二学期,第0次作业
    最后一次作业——总结报告
    第14、15周作业
    第七周作业
    第6周作业
    第四周作业
    “黄领衫”获奖感言
    2018上C语言程序设计(高级)作业- 第4次作业
    2018上C语言程序设计(高级)作业- 第3次作业
    2018上C语言程序设计(高级)作业- 第2次作业
  • 原文地址:https://www.cnblogs.com/xuning/p/3368264.html
Copyright © 2011-2022 走看看