博客
关于我
遍历数组寻找符合条件的数:力扣(414、628)
阅读量:693 次
发布时间:2019-03-17

本文共 1347 字,大约阅读时间需要 4 分钟。

一、母题:求第三大数

在求解数组中的第三大数问题时,我们需要定义多个变量来存储前几大的数。例如,第三大的数可以通过以下方式实现:

  • 定义变量:使用三个变量分别存储前三个最大的数,max1max2max3,其中 max1 是最大值,max2 是第二大值,max3 是第三大值。
  • 处理重复值:在遍历数组时,如果某个值等于现有的最大值,则跳过。
  • 更新变量:根据当前数与现有最大值的关系,更新变量,例如:
    • 如果当前数大于 max1,则 max3 替换 max2max2 替换 max1max1 更新为当前数。
    • 如果当前数介于 max2max1 之间,则 max3 替换 max2max2 更新为当前数。
    • 如果当前数小于 max2 但大于 max3,则 max3 更新为当前数。
  • 二、变体:求最大乘积

    在变体问题中,我们需要考虑数组中既有正数也有负数的情况。这种情况下,我们需要遍历数组,分别找出最大的三个数和最小的两个数(因为负数的绝对值较大的数实际上是更小的数)。最终,最大乘积可能来自以下两种情况:

  • 最大的三个正数。
  • 最大的一个正数和最小的一个负数的二次方的结果。
  • 解决方案如下:

  • 定义变量:使用 max1max2max3 来存储前三个最大的数,以及 min1min2 来存储最小的两个数。
  • 遍历数组:在遍历过程中,判断每个数是最大值还是最小值,并更新相应的变量。
  • 计算乘积:最后比较两个可能的乘积(三个最大的数的乘积和最大正数与最小负数的乘积),返回最大的那个值。
  • 代码示例

    public int maximumProduct(int[] nums) {    int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;    int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;        for (int num : nums) {        // 处理最大值部分        if (num > max1) {            max3 = max2;            max2 = max1;            max1 = num;        } else if (num > max2) {            max3 = max2;            max2 = num;        } else if (num > max3) {            max3 = num;        }                // 处理最小值部分        if (num < min1) {            min2 = min1;            min1 = num;        } else if (num < min2) {            min2 = num;        }    }    return Math.max(max1 * max2 * max3, min1 * min2 * max1);}

    转载地址:http://lxhhz.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>
    Nginx配置负载均衡到后台网关集群
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>