前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三个数的最大乘积

三个数的最大乘积

作者头像
忧愁的chafry
发布2022-10-30 15:48:58
2840
发布2022-10-30 15:48:58
举报
文章被收录于专栏:个人技术笔记

题目:

思路:

本题难点:第一,三个数相乘有可能会达到数值的极限,应用long,其次,结果为两种,最大的三个数相乘或者最大的正数与最小的两个负数相乘。

代码示例:

public class Solution2 {

    public static void main(String[] args) {

        int[] A = {3472, 7789, 7955, -7098, -9281, 6101, 5051, 7778, 3090, 7423, -7151, 5652, 1595, -8094, 677, -8324, 8347, -2482, 9313, -9338, -3157, 8559, 6945, 3618, 3087, 121, -8468, 3225, 1356, 6939, 2799, -7231, -6309, -5453, 633, -8689, -4776, 2714, -2743, -1409, 5918, -3333, 1803, 8330, -2206, -6117, -4486, -7903, -4375, -3739, 2897, 8056, -5864, -522, 7451, -4541, -2813, 5790, -532, -6517, 925};

        System.out.println(solve(A));

    }

    /**

     * 最大乘积

     *

     * @param A int整型一维数组

     * @return long长整型

     */

    public static long solve(int[] A) {

        int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE;

        int min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE;

        for (int i = 0; i < A.length; i++) {

            if (A[i] < min1) {

                min2 = min1;

                min1 = A[i];

            } else if (A[i] < min2) {

                min2 = A[i];

            }

            if (A[i] > max1) {

                max3 = max2;

                max2 = max1;

                max1 = A[i];

            } else if (A[i] > max2) {

                max3 = max2;

                max2 = A[i];

            } else if (A[i] > max3) {

                max3 = A[i];

            }

        }

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

    }

}

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目:
  • 思路:
  • 代码示例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档