美文网首页
等差数列——网易

等差数列——网易

作者: 远o_O | 来源:发表于2017-08-31 09:47 被阅读33次
  • 如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们就称数列S为等差数列。

小易现在有一个长度为n的数列x,小易想把x变为一个等差数列。小易允许在数列上做交换任意两个位置的数值的操作,并且交换操作允许交换多次。但是有些数列通过交换还是不能变成等差数列,小易需要判别一个数列是否能通过交换操作变成等差数列

题目大意:

  • 判断一个数列是否是等差数列,因此该题的优化主要集中在Top 2问题上面。

    • parition算法:O(n)
    • 优先队列:O(nlog2)
    • 排序:O(nlogn)
  • 该题还有一种有bug的做法,采用等差数列求和公式,时间复杂度虽然同样达到O(n),但是明显更快,因为是真正的O(n),只需扫描一遍。

bug主要是,sum虽然可以和等差数列的和一样,但是不能证明该数列是等差数列。
虽然该解法可以通过OJ,显然是OJ测试用例不足。

Code

public class DisArr {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int a[] = new int[n];
        for (int i = 0; i < n; ++i)
        {
            a[i] = scanner.nextInt();
        }
        scanner.close();

        Arrays.sort(a);
        int dis = a[1] - a[0];
        for (int i = 1; i < a.length; ++i)
        {
            if (a[i] - a[i - 1] != dis)
            {
                System.out.println("Impossible");
                return;
            }
        }
        System.out.println("possible");
    }
}

相关文章

  • 等差数列——网易

    如果一个数列S满足对于所有的合法的i,都有S[i + 1] = S[i] + d, 这里的d也可以是负数和零,我们...

  • 等差数列性质

    等差数列数列的性质 等差数列的性质是等差数列中重难点内容,利用等差数列的性质能够简化等差数列的基本量的相关问题,等...

  • Python内置函数-range()和xrange()

    range([start], stop[, step]) 返回等差数列。构建等差数列,起点是start,终点是st...

  • Excel中构造等差数列的套路(2)

    二、构造等差数列 1.简单的等差数列 简单的等差数列,即一眼就能看出公差是多少的,可以根据通项公式进行“凑” 比如...

  • 数列

    数列 等差数列 定义 设 为 前 项和 例题 1 (2016 年江苏高考,理 8)已知 是等差数列, 是其...

  • POJ 1658

    POJ 1658 题意 求等比或者等差数列 思路 根据前四个数判断是等比数列还是等差数列

  • 数学知识复习

    等差数列 对数公式及推导 对数公式

  • 关于素数的编程

    题目 设一个等差数列,首元素为367,公差为186, 现在要求找出属于该等差数列中的第151个素数并输出。 编辑 ...

  • LeetCode #1027 Longest Arithmeti

    1027 Longest Arithmetic Subsequence 最长等差数列 Description:Gi...

  • 一道简单题的讲解

    审题:已知点电荷的等势面,半径成等差数列,已知两面上的电势大小,求另一个面的电势大小。 分析:所谓等差数列,半径是...

网友评论

      本文标题:等差数列——网易

      本文链接:https://www.haomeiwen.com/subject/bigfjxtx.html