当前位置: 首页 > news >正文

算法题 — 三个数的最大乘机

三个数的最大乘机

整型数组 nums,在数组中找出由三个数字组成的最大乘机,并输出这个乘积。(乘积不会越界)

重点考察:线性扫描

排序法:

public static void main(String[] args) {
    System.out.println(sort(new int[]{1, 2, 3, 4, 5}));
    System.out.println(sort(new int[]{-5, -4, -3, -2, -1}));
    System.out.println(sort(new int[]{-3, -2, -1, 1, 2}));
    System.out.println(sort(new int[]{-3, 1, 2, 3, 4}));
}

public static int sort(int[] nums) {
    Arrays.sort(nums);
    int len = nums.length;
    return Math.max(nums[len - 1] * nums[len - 2] * nums[len - 3],
            nums[0] * nums[1] * nums[len - 1]);
}

线性扫描:

public static int getMaxMin(int[] nums) {
    int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;
    int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;
    for (int x : nums) {
        if (x < min1) {
            min2 = min1;
            min1 = x;
        } else if (x < min2) {
            min2 = x;
        }
        if (x > max1) {
            max3 = max2;
            max2 = max1;
            max1 = x;
        } else if (x > max2) {
            max3 = max2;
            max2 = x;
        } else if (x > max3) {
            max3 = x;
        }
    }

    return Math.max(min1 * min2 * max1, max1 * max2 * max3);
}

以 [-3, -5, 2, 1, 4] 为例:
线性扫描

相关文章:

  • Linux系统之部署复古游戏平台
  • RabbitMQ安装
  • 程序计数器介绍
  • 团体程序设计天梯赛 L2-007 家庭房产(并查集模拟)
  • Spring Test 常见错误
  • 本机虚拟机centos7设置固定ip
  • 大模型中 .safetensors 文件、.ckpt文件和.pth以及.bin文件区别、加载和保存以及转换方式
  • wordpress外贸独立站
  • Python爬虫——Urllib库-1
  • 2024京津冀光伏展
  • 刚工作菜鸟的小总结2
  • 短视频提取gif如何做?三秒快速转换
  • 【C语言】编程题专项练习+答案
  • Java 代理模式详解(附案例源代码)
  • vscode中使用nvm安装node及创建vue3项目
  • 三种图片预览插件viewer、vue-photo-preview、vue-picture-preview
  • java八股文复习-----2024/03/03
  • MAB建模规范介绍
  • 外包干了10个月,技术退步明显.......
  • 数据结构学习(四)高级数据结构
  • 长三角数智文化产业基金意向签约会成功举办
  • 现场|贝聿铭上海大展:回到他建筑梦的初始之地
  • 银行板块整体走强,工行、农行、中行股价再创新高
  • 著名茶叶专家谢丰镐逝世,享年95岁
  • 湖南永州公安全面推行“项目警官制”,为重点项目建设护航
  • 山西国道塌方致55岁货车司机死亡,女儿:货车的车贷还要还