美文网首页
玩转面试之高频算法题 - find max and min

玩转面试之高频算法题 - find max and min

作者: lianmeng | 来源:发表于2018-04-12 12:43 被阅读0次

描述:通过最少的比较次数(1.5n),找到数组中最大的数和最小的数

思路1:每次取出两个数比较大小,较大者和最大值比得到最大值,较小者和最小值比得到最小值

/*
use  least (1.5n) times compare to find the max and min value of an array
 */
public class FndMaxAndMin {
    public class MaxAndMin {
        int max;
        int min;
        MaxAndMin(int m, int n) {
            max = m;
            min = n;
        }
    }

    MaxAndMin findMaxAndMin(int[] nums) {
        int max = -1;
        int min = -1;
        int length = nums.length;
        if (length == 0) {
            return new MaxAndMin(max, min);
        }
        max = nums[0];
        min = nums[0];
        for (int i = 1; i < length / 2; i++) {
            int tmpMax = nums[i] > nums[length - i] ? nums[i] : nums[length - i];
            max = max > tmpMax ? max : tmpMax;
            min = min < nums[i] + nums[length - i] - tmpMax ? min : nums[i] + nums[length - i] - tmpMax;
        }
        return new MaxAndMin(max, min);
    }
}

相关文章

  • 玩转面试之高频算法题 - find max and min

    描述:通过最少的比较次数(1.5n),找到数组中最大的数和最小的数 思路1:每次取出两个数比较大小,较大者和最大值...

  • LeetCode Top 100 高频算法题 07:11. Co

    LeetCode Top 100高频算法题,即LeetCode上最高频的100道求职面试算法题。小编和实验室同学之...

  • 14. 最长公共前缀

    def find_com_str(l): m =max(l) n =min(l) print max(l) if ...

  • 60题Java高级工程师面试高频题:JVM+Redis+并发+算

    60题Java高级工程师面试高频题:JVM+Redis+并发+算法+框架含答案!面试,也是一种学习方式面试,不仅仅...

  • 剑指offer-Python版(上)

    剑指offer上面的66道算法题是面试高频题,书中用C/C++写的答案,本篇笔记用python刷一遍所有的算法题,...

  • 五个基本函数max,min,sum,count,avg的算法

    五个基本函数算法 准备阶段 max() min() sum() count() avg()

  • Math

    试炼 写一个函数,返回从min到max之间的 随机整数,包括min不包括max 写一个函数,返回从min都max之...

  • JS的Math应用

    1、写一个函数,返回从min到max之间的随机整数,包括min不包括max 2、写一个函数,返回从min都max之...

  • Math数组Date

    1、写一个函数,返回从min到max之间的随机整数,包括min不包括max 2、写一个函数,返回从min都max之...

  • Math & Date

    1、写一个函数,返回从min到max之间的随机整数,包括min不包括max 2、写一个函数,返回从min都max之...

网友评论

      本文标题:玩转面试之高频算法题 - find max and min

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