求微软面试题:求整数随机数构成的数组中找到长度大于=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;i maxLength) { isChange=true; maxLength=temp_length; } } } if(isChange) max_v=temp_v; temp_v.clear(); } } cout< <