找最长等差数列的长度

题目描述:给定n(1<=n<=100)个数,从中找出尽可能多的数,使得他们能够组成一个等差数列.求最长的等差数列的长度,每个数的绝对值不超过10000000.

样例:

输入数组为:2,8,3,5,6,4

输出为:5

Java代码实现:

 1 import java.util.*;
 2 public class Main {
 3     public static int maxlength(int a[]){
 4         int n=a.length;
 5         int large=0;                      //记录最大长度
 6         Arrays.sort(a);                   //将数组排序
 7         if ((a[0]==a[n-1]))  return n;    //如果最小值和最大值相等,说明整个序列是公差为0的等差序列,直接返回总长度
 8
 9         for (int i=0;i<n;i++)             //从头开始枚举
10         {
11             for (int j=i+1;j<n;j++)
12             {
13                 int now=j;
14                 int ans=2;               //存储本次最长等差序列
15                 int gc=a[j]-a[i];        //存储公差
16                 for (int k=j+1;k<n;k++)
17                 {
18                     if ( (a[k]-a[now])==gc)
19                     {
20                         ans=ans+1;
21                         now=k;
22                     }
23                     if(a[k]-gc>a[now]) break;   //如果连续两项的差大于公差,结束本次查找
24                 }
25                 if(large<ans)large=ans;         //更新本次最长长度
26             }
27         }
28         return large;                          //返回最长等差序列长度
29     }
30
31     public static void main(String[] args) {
32         int[] a={2,8,3,5,6,4};
33         System.out.print("整数序列为:");
34         for(int i=0;i<a.length;i++)
35             System.out.print(a[i]);
36         System.out.println();
37         System.out.println("最长等差数列长度为:"+maxlength(a));
38     }
39
40 }

输出结果为:

整数序列为:283564
最长等差数列长度为:5

时间: 2024-12-25 04:41:28

找最长等差数列的长度的相关文章

n个整数中,找出尽可能多的数使他们组成一个等差数列,求最长等差数列的长度

例子:  3,8,4,5,6,2          返回值应该为 :5 这是昨天做的一道优酷土豆的编程题,和leetcode中的128/ Longest Consecutive Sequence 有点相似,但是leetcode题的公差是确定的1,而这道题的公差是不确定的. 本人的写出的是一种通过穷举的方法实现查找最长等差数列,通过hash使查找更为方便,减少了复杂度. int calcAPLength(const vector<int> &intAr) // 找数列中,最长的等差数列的

51nod1055 最长等差数列

基准时间限制:2 秒 空间限制:262144 KB 分值: 80 N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括两项的不列举) 1 3 5 1 5 9 13 3 6 9 12 3 8 13 5 9 13 6 8 10 12 14 其中6 8 10 12 14最长,长度为5. Input 第1行:N,N为正整数的数量(3 <= N <= 10000). 第2 - N+1行:N个正整数.(2<= A[i] &

1055 最长等差数列

1055 最长等差数列 基准时间限制:2 秒 空间限制:262144 KB N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括两项的不列举) 1 3 5 1 5 9 13 3 6 9 12 3 8 13 5 9 13 6 8 10 12 14 其中6 8 10 12 14最长,长度为5. Input 第1行:N,N为正整数的数量(3 <= N <= 10000). 第2 - N+1行:N个正整数.(2<= A

51 nod 1055 最长等差数列(dp)

1055 最长等差数列 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括两项的不列举) 1 3 5 1 5 9 13 3 6 9 12 3 8 13 5 9 13 6 8 10 12 14 其中6 8 10 12 14最长,长度为5. Input 第1行:N,N为正整数的数量(3 <= N <= 10000). 第2 - N+1行

【leetcode-03】给定一个字符串,请你找出其中不含有重复字符的最长子串的长度

开个新坑,leetcode上面做题目.下面是题目描述: <!-- 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew" 输出

最长有效括号长度

题目详情 给定只包含括号字符'('和 ')''的字符串,请找出最长的有效括号内子括号的长度. 举几个例子如下: 例如对于"( ()",最长的有效的括号中的子字符串是"()" ,有效双括号数1个,故它的长度为 2. 再比如对于字符串") () () )",其中最长的有效的括号中的子字符串是"() ()",有效双括号数2个,故它的长度为4. 再比如对于"( () () )",它的长度为6. 换言之,便是有效双括

LeetCode: 3_Longest Substring Without Repeating Characters | 求没有重复字符的最长子串的长度 | Medium

题目: Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest s

2014阿里巴巴网上笔试题-文章3大标题-公共最长的字符串长度

说明 2014阿里巴巴网上笔试题-文章3大标题    首先.我没有参加阿里巴巴网上笔试题,所有的主题是叙述性说明来自别人.的分析.假设有什么不正确的地方还望不吝赐教. 也希望大家可以有更好的办法,希望大家来能不吝赐教. 题目描写叙述 给定一个主字符串和一个匹配字符串.如今问你,找出 "主串中可匹配到的匹配串中子串的最大长度",可能比較绕.举个样例吧 主字符串       abcdefgsdff     记为A 匹配字符串   abefgf               记为B 要求的值就

【算法】查找字符串中无重复最长子串的长度

题目:输入是一个字符串,找出没有重复字符的最长子字符串的长度 示例: "abcabcbb"最长子串(abc)长度为3 "bbbbbbb"最长子串(b)长度为1 "abdevbac"最长子串(bdev)长度4 算法思想: 设置两个下标标识,初始时都位于数组的头部,并设置一个HashSet.标识runner先往后走,并将经过的字符放入HashSet中,当存在重复的字符时停止移动:此时,标识walker在后面追,直到walker的字符和runner的字