题目
序列找数
从非负整数序列 0, 1, 2, …, n中给出包含其中n个数的子序列,请找出未出现在该子序列中的那个数。
解法
代码
#include<iostream>#include<vector>using namespace std;int main(){int N,num,temp;vector<vector<int>> intervals;cin>>N;vector<int> current={0,N};intervals.push_back(current);for(int i=0;i<N;i++){cin>>num;if(intervals.empty()){current.clear();current.push_back(num);current.push_back(num);intervals.push_back(current);}else{for(int j=0;j<intervals.size();j++){if(num>=intervals[j][0]&&num<=intervals[j][1]){if(intervals[j][0]==intervals[j][1]){intervals.erase(intervals.begin() + j, intervals.begin() + j+1);}else if(intervals[j][0]==num){intervals[j][0]=num+1;}else if(intervals[j][1]==num){intervals[j][1]=num-1;}else{temp=intervals[j][1];intervals[j][1]=num-1;current.clear();current.push_back(num+1);current.push_back(temp);intervals.insert(intervals.begin()+j+1,current);}break;}}}}cout<<intervals[0][0]<<endl;return 0;}
如果觉得《招商银行信用卡中心笔试编程题 - 序列找数》对你有帮助,请点赞、收藏,并留下你的观点哦!