网易等差数列

来源:互联网 发布:ios 网络请求缓存 编辑:程序博客网 时间:2024/04/30 18:33

如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。
小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列

#include<iostream>

#include<string>
#include<algorithm>
#include<map>
using namespace std;
class solution
{
public:
bool num_ser( int nums[],int length)
{
map<int, int> cha; 
sort(nums,nums+length);
for (int i = 0; i < length-1; i++)
{
int a = nums[i + 1] - nums[i];
if (cha.find(a) == cha.end())
cha[a] = 1;//新的键值对的加入方法:直接加入
else
cha[a]++;
}
if (cha.size()>1)
return false;
else
return true;
}
};
int main()
{
int nums[10];
//cin >> nums;
cout << "please input 10 nums:" << endl;
for (int i = 0; i < 10; i++)
{
cin >> nums[i];
}
solution s;
bool re;
re = s.num_ser(nums,10);
cout << re << endl;
return 0;
}