标签:招行 int 笔试 pop num numofs2 stack1 stack2 提前
第一题: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; 6 int answer = 0; 7 set<int>ans; 8 stack<int> stack1,stack2; 9 for(int i= 0;i<length;i++) { 10 int num; 11 cin >> num; 12 stack1.push(num); 13 } 14 for(int i= 0;i<length;i++) { 15 int num; 16 cin >> num; 17 stack2.push(num); 18 } 19 //用两个栈来保存两个队伍;stack2为需排成的队伍; 20 while(!stack1.empty()&&!stack2.empty()){ 21 int numofs1 = stack1.top(); 22 int numofs2 = stack2.top(); 23 //不需要移动,出栈 24 if(numofs1 == numofs2){ 25 stack1.pop(); 26 stack2.pop(); 27 } 28 else{ 29 //已经移动过了,在最合适的位置 30 if(ans.count(numofs2)) stack2.pop(); 31 else { 32 //没移动过,需要移动到合适位置,计数加1,并且从比较栈出栈。 33 answer += 1; 34 ans.insert(numofs1); 35 stack1.pop(); 36 } 37 } 38 } 39 cout << ans.size(); 40 return 0; 41 }
标签:招行,int,笔试,pop,num,numofs2,stack1,stack2,提前 来源: https://www.cnblogs.com/cotoyo25/p/16207750.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。