给定一个未排序数组, 找出其中最长的等差数列
来源:互联网 发布:天津中兴研究所 知乎 编辑:程序博客网 时间:2024/04/29 16:03
转载请注明来自souldak,微博:@evagle
题目如题所诉:其实就是前面那篇leetcode 最长连续序列 longest consecutive sequence的升级版
leetcode上的题目是要求等差为1,即连续序列,而现在把等差为1的限制条件去掉,找最长的等差数列,做法和复杂度却升级了。
现在给出一个O(n^2)的算法:
算法思路:
先排序,O(NlogN)
从后往前,对于a[i],令 j=i+1~n-1
map[pair(a[i],a[j]-a[i])] = max(map[pair(a[j]-,a[j]-[a[i])] , 1) + 1
其中pair(a,b)表示以a为首项,b为等差的等差数列的最长的长度
从a[n-1]一直算到a[0],所有的pair(a[k],b)都算出来了,现在只要找出其中最大的即可。
按着这个思路,代码实现也比较简单,就不上代码了。
按着这个思路,代码实现也比较简单,就不上代码了。
- 给定一个未排序数组, 找出其中最长的等差数列
- 给定未排序的数组,请给出方法找到最长的等差数列
- 在一个无序的数组中找出最长的等差数列
- 找出数组中长度最长的等差数列
- 给定一个未排序的整数数组,找到其中位数。 中位数是排序后数组的中间值,
- 找出最长的等差数列
- 给定一个无序整形数组,找出其中所以三个数之和为0的所有组合
- 阿里——给一个整形数组,找出其中和等于给定值的组合
- 给定一个无序整型数组,找出数组中未出现的最小整数
- 【Java】有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串的位置
- 给定一个长度为N的数组,找出一个最长的单调自增子序列
- 未排序正数数组中累加和为给定值的最长子数组长度
- 求:未排序数组中累加和为给定值的最长子数组长度
- 未排序数组中累加和为给定值的最长子数组
- 未排序数组中累加和小于给定值的最长子数组长度
- 未排序数组中累加和为给定值的最长子数组
- 未排序正数数组中累加和为给定值的最长子数组长度
- 未排序数组中累加和为给定值的最长子数组系列问题
- Calendar,Date使用总结
- Eclipse安装WindowBuilder
- 高德地图手机SDK介绍及开发经验分享
- PHP开发Eaby API起步工作
- 原码,反码,补码,移码转换技巧
- 给定一个未排序数组, 找出其中最长的等差数列
- 改善C++ 程序的150个建议学习之建议14:小心typedef使用中的陷阱
- C++控制台程序忽略断言窗口,让程序继续的办法
- Android高通平台处理器间通讯驱动
- BOM相关的权限控制
- windows phone 8 解决模拟器不能上网
- C 实现链式栈codeblocks和VC2012通过
- difirence for oracle and mysql
- Apache2+Tomcat6 url 中文乱码