美文网首页算法第四版习题讲解
算法练习(70): 最遥远的一对(1.4.17)

算法练习(70): 最遥远的一对(1.4.17)

作者: kyson老师 | 来源:发表于2017-12-18 15:17 被阅读153次

本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本人新建了一个微信群(算法交流),想要加入的,请添加我的微信号:zhujinhui207407 谢谢。另外,本人的个人博客 http://www.kyson.cn 也在不停的更新中,欢迎一起讨论

算法(第4版)

知识点

  • 最遥远的一对

题目

1.4.17 最遥远的一对(一维)。编写一个程序,给定一个含有 N 个 double 值的数组 a[],在其中找到一对最遥远的值:两者之差(绝对值)最大的两个数。程序在最坏情况下所需的运行时间应该是线性级别的。


1.4.17 Farthest pair (in one dimension). Write a program that, given an array a[] of N double values, finds a farthest pair : two values whose difference is no smaller than the the difference of any other pair (in absolute value). The running time of your program should be linear in the worst case.

分析

这道题的解法跟上道题差不多,很容易就能解出来。

public class FastestPair {
    public static void fastestPair(double[] x)
    {
        System.out.println("最遥远的两个数为:"+x[0]);
        System.out.println("和:"+x[x.length- 1]);
    }
    
    public static void main(String[] args){
        double[] a = {1,2,3,4,5,888,76,45};
        Arrays.sort(a);
        fastestPair(a);
    }
}

以上代码的地址:FastestPair.java
同样,跟题目的要求不匹配,为何?因为这个算法复杂度是常数级别。因为一旦调用了Arrays.sort(a)后,直接取最大值最小值即可。那怎么符合“线性”复杂度呢,还是要加层循环。

答案

public class FastestPairLinear {
    public static void fastestPairLinear(double[] x)
    {
        double max = Double.MIN_VALUE;
        double min = Double.MAX_VALUE;
        for (int i = 0; i < x.length; i++) {
            if (x[i] >= max) {
                max = x[i];
            }
            if (x[i] < min) {
                min = x[i];
            }
        }
        System.out.println("最遥远的两个数为:"+max);
        System.out.println("和:"+min);
    }
    
    public static void main(String[] args) {
        double[] a = {1,2,3,4,5,888,76,45};
        fastestPairLinear(a);
    }
}

代码索引

FastestPairLinear.java

广告

我的首款个人开发的APP壁纸宝贝上线了,欢迎大家下载。

相关文章

  • 算法练习(70): 最遥远的一对(1.4.17)

    本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本...

  • 【插画练习190】最遥远的理想

    人生路途漫漫,别忘初心,真实的自己也许不是人见人爱,但起码自己活得舒坦。

  • 现代诗|世界上最遥远的距离

    《世界上最遥远的距离》 世界上最遥远的距离 是那双无法看见世间光明的眸眼 是那双无法聆听万物声音的耳朵 是一对做事...

  • leetcode之树

    写在前面:涉及到树的算法中,最简单的算法就是利用递归,但是递归的系统开销比较大,并且栈容量不可控,作为算法练习,以...

  • 最遥远。

    琉璃多似水。 繁华所指向的尽头,是梦境破碎的地方。 我不该平庸。 以上内容均原创未,经本人同意请勿转载。

  • 最遥远

    1.你笑的时候满园的花朵错过了一季春天。 2.你是我蹉跎了前半生后邂逅的最惊喜的意外。 3.冰雪初融 春风袭面 你...

  • 算法练习(69): 最接近的一对(1.4.16)

    本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本...

  • 小麦子的ScalersTalk第四轮新概念朗读持续力训练Day7

    ​练习材料: 练习材料: Lesson70 Red for danger During a bullfight, ...

  • 最朴素,最遥远

    2015年8月1日,星期六 拍下这张照片是在第一次去老校区图书馆的路上。悠闲的走着走着,静下心来看看这片天空,仿若...

  • c++ STL algorithm(转载)

    STL中的所有算法(70个) STL算法部分主要由头文件 ,,组成。要使...

网友评论

  • 走进科学:题目的数组并未进行过排序,如果要进行排序后在操作,那排序本身的计算量也要考虑进去,所以第一个答案的复杂度根本不是常数复杂度

本文标题: 算法练习(70): 最遥远的一对(1.4.17)

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