几个数字求乘积最大或者最小,思路是啥
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了几个数字求乘积最大或者最小,思路是啥相关的知识,希望对你有一定的参考价值。
你好首先
如果是最大
那么
两个数最大相乘才是最大
所以
要两个数是最大的
及
就是
8642
x
7531
如果是
最小
反之
ok
仅代表个人观点,不喜勿喷,谢谢。 参考技术A 小学肯定不会有8位数的了。
一般是4个或者5个,让学生锻炼一下乘法的能力。
大数放在第一个。比如
12345
5和4一定要放在两个相乘数的第一位上
剩下的也没几种配合了,算一下就行了。
531*42
532*41
521*43
就这三种了,算一下就知道了。
152. Maximum Product Subarray
一、题目
1、审题
2、分析
求一个整数数组中的连续子串的最大乘积。
二、解答
1、思路:
①、遍历数组,采用三个变量进行记录。
maxCurProduct:包含当前下标的数组元素时的最大乘积。
minCurProduct: 包含当前下标的数组元素时的最小乘积。
product: 当前为止的最大乘积。
②、因为数组中可能存在负数,而 负数乘以越小的数乘积越大。故当 arr[i] < 0 时,交换 maxCurProduct 与 minCurProduct 值。
public int maxProduct(int[] nums) { if(nums.length == 0) return 0; int product = nums[0]; int minCurProduct = nums[0]; // 到当前元素位置 max int maxCurProduct = nums[0]; // 到当前位置 min for (int i = 1; i < nums.length; i++) { if(nums[i] < 0) { // num[i] < 0, 则 curProduct 越小,乘积越大 int tmp = minCurProduct; minCurProduct = maxCurProduct; maxCurProduct = tmp; } maxCurProduct = Math.max(nums[i], maxCurProduct * nums[i]); minCurProduct = Math.min(nums[i], minCurProduct * nums[i]); product = Math.max(product, maxCurProduct); } return product; }
以上是关于几个数字求乘积最大或者最小,思路是啥的主要内容,如果未能解决你的问题,请参考以下文章