zoukankan      html  css  js  c++  java
  • LeetCode.908-最小差值 1(Smallest Range I)

    这是悦乐书的第348次更新,第372篇原创

    01 看题和准备

    今天介绍的是LeetCode算法题中Easy级别的第213题(顺位题号是908)。给定一个整数数组A,对于每个整数A[i],我们可以选择任何x,其中-K <= x <= K,并将x的值加到A[i]上。在这个过程之后,A变成了新数组B.

    返回B的最大值和B的最小值之间的最小可能差值。例如:

    输入:A = [1],K = 0
    输出:0
    说明:B = [1]

    输入:A = [0,10],K = 2
    输出:6
    说明:B = [2,8]

    输入:A = [1,3,6],K = 3
    输出:0
    说明:B = [3,3,3]或B = [4,4,4]

    注意

    • 1 <= A.length <= 10000

    • 0 <= A [i] <= 10000

    • 0 <= K <= 10000

    02 解题

    题目要求我们计算B数组中最大值和最小值的最小可能差值,而B数组是由A数组中每一个元素加上K后得到的。

    要想最大值和最小值的差值最小,即最大值、最小值无限接近,最理想状态是最大值等于最小值,其差值为0。

    所以,我们只需要找到A里面的最大值、最小值,将最大值减去x的最大值,即K,将最小值加上x的最大值,让最大值、最小值的数值更加接近。

    另外,最大值和最小值的最小可能差值是不能小于0的,最小只能到0。

    public int smallestRangeI(int[] A, int K) {
        int max = -1, min = 10001;
        for (int num : A) {
            if (num > max) {
                max = num;
            }
            if (num < min) {
                min = num;
            }
        }
        if ((max-K)-(min+K) < 0) {
            return 0;
        }
        return (max-K)-(min+K);
    }
    

    03 小结

    算法专题目前已连续日更超过六个月,算法题文章216+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

    以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

  • 相关阅读:
    iframe自适应高度的多种方法
    jquery 限制上传文件的类型和大小
    20200303 pandas
    20200306 Linux基础
    20200305 VMware虚拟机安装及centOS
    20200310 CMDB基础设计
    20200407 算法与数据结构
    20200403 MongoDB操作以及pyMongo
    20200402 MongoDB安装及简介
    20200401 docker部署与mysql主从搭建django读写分离
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/10995082.html
Copyright © 2011-2022 走看看