`

随机数构成的数组中找到长度大于=3的最长的等差数列

    博客分类:
  • Java
阅读更多
来自:http://www.iteye.com/problems/64504?page=2

    @SuppressWarnings("unchecked")
    private static void getArithmeticProgression(int[] array) {
        /* 排序 */
        Arrays.sort(array);
        /* 存放最大等差数列的容器 */
        ArrayList<Integer> maxList = new ArrayList<Integer>();
        /* 存放等差数列的临时容器 */
        ArrayList<Integer> tmpList = new ArrayList<Integer>();
        int len = array.length;
        for (int i = 0; i < len; i++) {
            for (int j = i + 1; j < len; j++) {
                /* 清空list */
                tmpList.clear();
                /* 添加数列的第一个元素 */
                tmpList.add(i);
                /* 添加数列的第二个元素*/
                tmpList.add(j);
                /* 当前数列的元素个数 */
                int num = 2;
                /* 等差 */
                int progression = array[j] - array[i];
                /* 当前元素位置 */
                int current = j;
                /* 下一个元素位置 */
                int next = j + 1;
                /* 从current开始遍历*/
                while (next < len) {
                    /*下一个元素和当前元素是等差数列*/
                    if (array[next] - array[current] == progression) {
                        tmpList.add(next);
                        current = next;
                        num++;
                    }
                    next++;
                }
                /* 设定最大等差数列*/
                if (num >= maxList.size()) {
                    maxList = (ArrayList<Integer>)tmpList.clone();
                }
            }
        }
        /* 输出结果 */
        for (Integer o : maxList) {
            System.out.println(array[o]);
        }
    }
分享到:
评论
2 楼 hudingchen 2011-09-02  
chriszeng87 写道
这个效率也太低了吧

看了帖子,就随便写了一个,你的效率高,不妨贴出来看看??
1 楼 chriszeng87 2011-08-30  
这个效率也太低了吧

相关推荐

    javascript入门笔记

    Javascript Basic 1、Javascript 概述(了解) Javascript,简称为 JS,是一款能够运行在 JS解释器/引擎 中的脚本语言 JS解释器/引擎 是JS的运行环境: 1、独立安装的JS解释器 -... 2、在函数体中,如果 a 大于 b的话...

    js代码-第1天 用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

    js代码-第1天 用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

    e语言mp3源码

    然后数组清零,多文件对话框保存到音乐路径程序集变量中。默认选择第一个,然后获取焦点。定义个程序集数组变量存储路径 2:加入列表框:判断取数组成员数的音乐路径不等于0,在判断列表框的表项数不等于0,那么就取...

    C++ 中约瑟夫环替换计数器m(数组解决)

    输入一个由随机数组成的数列(数列中每个数均是大于0的整数,长度已知),和初始计数值m。从数列首位置开始计数,计数到m后,将数列该位置数值替换计数值m,并将数列该位置数值出列,然后从下一位置从新开始计数,...

    c# 加密和解密相关代码

    在第一个GroupBox 中放入3 个TextBox 控件和一个Button 按钮,分别用于输入数字、输入加密数字、显示加 密后的数字和计算加密信息;在第二个GroupBox 中放入一个TextBox 控件和一个Button 按钮,分别用于显示 解密后...

    ACORN-Js:ACORNJavaScript实现,第k个阶加法同余随机数(ACORN)生成器。 有关更多详细信息,请访问http

    用法ACORN.prototype.random = function(seed, length) 从指定长度的种子中生成一个数组,该种子用[0,1)中的数字填充。 为了避免较小的第一个元素,建议使用大于10 ^ 5的种子。 seed :生成器的种子。 请注意,使用...

    数据结构与算法.xmind

    比较两个数组的值谁小,谁小就放到我们的数组中 如果比较完之后还有剩余的数据,那么用while直接添加到我们的总数组中 优化思路 当递归到规模足够小时,利用插入排序 归并前判断一下...

    你必须知道的495个C语言问题

    1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 *1.26 main的正确定义是什么...

    世界500强面试题.pdf

    1.5.6. 输入两个整数 n 和 m,从数列 1,2,3.......n 中 随意取几个数 ....... 116 1.5.7. 输入一个表示整数的字符串,把该字符串转换成整数并输出.............. 118 1.5.8. 给出一个数列,找出其中最长的单调...

    《你必须知道的495个C语言问题》

    书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点。 《你必须知道的495个C语言问题》结构...

    精易模块[源码] V5.15

    返回值:0=最高,1=高于标准,2=实时,3=标准,4=低于标准,5=低,返回-1表示无权限访问进程。 2、新增“进程_置优先级”,特殊进程需要特权,设置一个进程的优先级别,成功返回真,失败返回假。 3、新增“窗口_取激活句柄...

    HW-Unit03

    过程该问题已通过以下方式解决:声明了函数生成密码制作了每个大写字母的数组,还制作了(几乎)每个特殊字符的数组。对于小写,将函数.toLowerCase()应用于大写数组,并使用数字字符Math.Random()声明了while...

    C语言FAQ 常见问题列表

    o 3.5 在 C 中是否有模拟继承等面向对象程序设计特性的好方法? o 3.6 我遇到这样声明结构的代码: struct name { int namelen; char namestr[1];}; 然后又使用一些内存分配技巧使 namestr 数组用起来好像有多个...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    73、原生JavaScript判断字符串是否大于规定的长度 74、原生JavaScript判断字符串是为网址不区分大小写 75、原生JavaScript判断字符串是否为小数 76、原生JavaScript判断字符串是否为整数 77、原生JavaScript判断字符...

    遗传算法与粒子群算法的实现

    BoundaryType定义了一个枚举,表示变量超出约束范围时为恢复到约束范围所采用的处理方式,分别是NONE(不处理),WRAP(加减若干整数个区间长度),BOUNCE(超出部分向区间内部折叠),STICK(取超出方向的最大限定值...

    C 语言编程常见问题解答.chm

    7.17 怎样说明一个大于64KB的数组? 7.18 far和near之间有什么区别? 7.19 什么时候使用far指针? 7.20 什么是栈(stack)? 7.21 什么是堆(heap)? 7.22 两次释放一个指针会导致什么结果? 7.23 NULL和NUL有...

Global site tag (gtag.js) - Google Analytics