沈阳学网站制作学校,网站的建设意见,免费云服务器官网,网站 文件 上传题目
给你一个整型数组 nums #xff0c;在数组中找出由三个数组成的最大乘积#xff0c;并输出这个乘积。 示例 1#xff1a; 输入#xff1a;nums [1,2,3] 输出#xff1a;6
分析
这道题目要求数组中三个数组成的最大乘积#xff0c;由于元素有正数有负数#xff…题目
给你一个整型数组 nums 在数组中找出由三个数组成的最大乘积并输出这个乘积。 示例 1 输入nums [1,2,3] 输出6
分析
这道题目要求数组中三个数组成的最大乘积由于元素有正数有负数所以我们无非考虑这三种情况三个数全正三个数全负二个负数一个正数 (由于要求最大的数所以俩正一负这种肯定是负数的就不用考虑了)我们对数组排序其实能发现三正三负最大值都是最大的那三个元素的积而俩负一正要想最大肯定是俩个最小的负和最大的正的积(我们只要排序求最小的那俩个数即可)然后比较这俩个数值即可
public class maximumProductofThreeNumbers {public static void main(String[] args) {int[] arr {1,2,3,4};System.out.println(getMax(arr));}public static int getMax(int[] arr) {int mxOne Integer.MIN_VALUE;int mxTwo Integer.MIN_VALUE;int mxThree Integer.MIN_VALUE;int minOne Integer.MAX_VALUE;int minTwo Integer.MAX_VALUE;int len arr.length;for(int i 0;ilen;i) {if(arr[i] mxOne) {mxThree mxTwo;mxTwo mxOne;mxOne arr[i];} else if(arr[i] mxTwo) {mxThree mxTwo;mxTwo arr[i];} else if(arr[i] mxThree) {mxThree arr[i];}if(arr[i] minOne) {minTwo minOne;minOne arr[i];} else if(arr[i] minTwo) {minTwo arr[i];}}return Math.max(mxOne * mxTwo * mxThree,mxOne * minOne * minTwo);}
}