描述
给出一个有序数列随机旋转之后的数列,如原有序数列为:[0,1,2,4,5,6,7] ,旋转之后为[4,5,6,7,0,1,2]。 假定数列中无重复元素,且数列长度为奇数。 求出旋转数列的中间值。如数列[4,5,6,7,0,1,2]的中间值为4。
输入
4,5,6,7,0,1,2
输出
4
输入样例
1
1,2,3
4,5,6,7,0,1,2
12,13,14,5,6,7,8,9,10
输出样例
1
2
4
9
解析:排序后找出中间值即可,这里我选择用容器vector自带的sort进行排序。
#include<bits/stdc++.h>
using namespace std;
int main(){
string input;
while(cin>>input)
{
vector<int> vec; //存放数列
istringstream ss(input);
string item;
int itemnum = 0; //记录数列个数
while(getline(ss,item,','))
{
vec.push_back(atoi(item.c_str()));
itemnum++;
}
sort(vec.begin(),vec.end()); //排序
auto it = vec.begin(); //利用迭代器寻找中间位置
int i = itemnum/2;
it += i;
cout<<*it<<endl;
}
return 0;
}