求无序数组中的三个数的最大乘积
来源:互联网 发布:试题库数据库设计论文 编辑:程序博客网 时间:2024/05/18 17:00
package exam;import java.util.Scanner;/** * 算法思想:取数组中前三个不为0的数作为初始最大乘积, * 然后一个一个地考虑新加入一个数对前面数组的三个数最大乘积是否有影响, * 如果有影响,说明最大三个数应该被新加入的数替换掉, * 如果没有影响,则保持原来的三个数的乘积为最大值。 * @author lilu * */public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] arr=new int[n]; for(int i=0;i<n;i++){ arr[i]=in.nextInt(); } int[] elements=new int[3]; boolean hasZero=false; //取前面不为0的三个数 int k=0; int index=0; for(index=0;index<n;index++){ if(arr[index]!=0){ elements[k]=arr[index]; k++; if(k==3) { index++; break; } }else{ hasZero=true; } } int max=elements[0]*elements[1]*elements[2]; int max1; int max2; int max3; for(int i=index;i<n;i++){ if(arr[i]==0){ hasZero=true; continue; } max=elements[0]*elements[1]*elements[2]; max1=elements[0]*elements[1]*arr[i]; max2=elements[0]*elements[2]*arr[i]; max3=elements[1]*elements[2]*arr[i]; if(max1>max){ max=max1; } if(max2>max){ max=max2; } if(max3>max){ max=max3; } if(max==max1){ elements[2]=arr[i]; } if(max==max2){ elements[1]=arr[i]; } if(max==max3){ elements[0]=arr[i]; } } if(max<0&&hasZero) max=0; System.out.println(max); }}
阅读全文
0 0
- 求无序数组中的三个数的最大乘积
- 无序数组中,三个数的乘积最大
- 拼多多笔试题一:给出一个无序整数数组,求任意三个数的最大乘积
- 求解无序数组中三个数的最大乘积 (python实现)
- 拼多多内推笔试一:求数组中任意三个数的最大乘积
- 从数组中找出乘积最大的三个数
- 求无序数组中三个元素相加与目标数最接近的三元素之和
- 求三个数中的最大数(二)
- 求三个数中的最大数
- 求三个数中的最大数
- 笔试题 找到数组中,三个数乘积最大的结果
- 求子数组的最大乘积
- 求连续子数组的最大乘积
- 求子数组的最大乘积
- 求三个数中的最大者
- 求三个正整数中的最大数
- 求三个数中最大的数
- C#--求三个数的最大数
- 浅谈Vue项目实战(项目结构了解)
- rxjs简单入门
- Lintcode97 Maximum Depth Of BinaryTree solution 题解
- 自定义线程池---ThreadPoolExecutor
- 2017.8.1 喷水装置(一)
- 求无序数组中的三个数的最大乘积
- 【Machine Learning】笔记:训练神经网络
- Codeforces 835E:The penguin's game
- PAT1021. 个位数统计
- Android进阶系列之1:数据库加密
- cmd 命令行 无法进入Python编辑器解决方案
- 浴谷夏令营第一期 d2上午例题分析
- 特征工程怎么做
- for...else...