数组3个数乘积的最大值
来源:互联网 发布:网络黑白 百度文学 编辑:程序博客网 时间:2024/06/01 07:24
/* 题目:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大。 要求时间复杂度:O(n),空间复杂度:O(1) */function maxProd(arr) { var len=arr.length; if(len<3){return;} var prod=arr[0]*arr[1]*arr[2]; if(len===3){return prod;} var max1=Number.MIN_VALUE, max2=Number.MIN_VALUE, max3=Number.MIN_VALUE; var min1=Number.MAX_VALUE, min2=Number.MAX_VALUE; for(var i=0;i<len;i++){ if(arr[i]>max1){ max3=max2; max2=max1; max1=arr[i]; }else if(arr[i]>max2){ max3=max2; max2=arr[i]; }else if(arr[i]>max3){ max3=arr[i]; }else{} if(arr[i]<min1){ min2=min1; min1=arr[i]; }else if(arr[i]<min2){ min2=arr[i]; }else{} } // 当数组的最大值<=0或者是数组的最小值>=0时,乘积最大就是数组中最大值的乘积 if(max1<=0||min1>=0){ return max1*max2*max3; } // 否则,最大乘积在(2小+1大)或(3大)中取得 var prod1=max1*max2*max3, prod2=min1*min2*max1; return prod1>prod2?prod1:prod2;}var arr=[3,-4,2,1];console.log(maxProd(arr)); // 6
阅读全文
0 0
- 数组3个数乘积的最大值
- 获取数组中子串乘积的最大值
- 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大
- 数组中任意3个数的乘积除以剩下的一个数
- 长度N数组,计算N-1长度的子数组乘积的最大值
- 求公共前缀长度与所选字符串个数的乘积的最大值 Trie树求最值 UVA 11488 Hyper Prefix Sets
- 子数组的乘积
- 子数组的乘积
- 数组元素的乘积
- 计算两数的乘积,求最大值
- C#--输入10个数存入数组中,求这10个数的最大值、最小值和平均值。
- n个整数数组返回n-1个乘积最大值
- LeetCode-713:Subarray Product Less Than K (乘积小于K的子数组个数) -- medium
- 输入10个数到数组,输出最大值
- 求当前数组中,最大值减最小值等于sum的数组个数
- 求数组中n-1个元素的乘积的最大值(某公司2007年校园招聘笔试试题)
- 计算4个数的最大值
- 输出10个数的最大值
- 让array_column()函数兼容低版本PHP
- 假如时光倒流,我会这么学习Java
- ie8 SCRIPT5007: 无法获取save未定义或 null 引用的属性
- 设计模式---创建型模式
- 自定义hibernate validation 注解
- 数组3个数乘积的最大值
- 最大子数组
- CS50 2016-Week3 学习笔记
- Head First Java 总结(三)
- iOS-OC创建链式语法(链式编程)
- JS小技巧-弹窗界面的js引用背景页面js中的变量。
- Ubuntu16.04+CUDA8.0+CUNN5.1+caffe+tensorflow+Theano
- llvm安装libclang3.9
- python中time和random模块的使用