微软面试题:求整数随机数构成的数组中找到长度大于=3的最长的等差数列

求微软面试题:求整数随机数构成的数组中找到长度大于=3的最长的等差数列

输出等差数列由小到大: 

如果没有符合条件的就输出[0,0]

格式:

输入[1,3,0,5,-1,6]

输出[-1,1,3,5]

要求时间复杂度,空间复杂度尽量小


这里我还没有想到更好的办法,目前只实现了一个sb版本的时间复杂度为O(n^3)的算法。。暴力破解。。

#include
#include
#include
using namespace std;

void main()
{
	int data[]={1,3,0,5,-1,6};
	int length=sizeof(data)/sizeof(int);
	sort(data,data+length-1);
	
	int maxLength=0;
	int i;
	int j;
	vector max_v;  //存放最大的那个队列的元素
	vector temp_v; //临时存放等差数列的元素
	bool isChange=false;
	for(i=0;imaxLength)
					{
						isChange=true;
						maxLength=temp_length;
					}
				}
			}
			if(isChange)
				max_v=temp_v;
			temp_v.clear();
		}
		
	}
	cout<::iterator it_v=max_v.begin();
	while(it_v!=max_v.end())
	{
		cout<




你可能感兴趣的:(算法)