题目: 给定一个包含正负数和零的一维无序数组,找到三个数字使得乘积最大 思路: 这道题目是个坑啊,我上来都没看直接当做之前一篇博文中求解矩阵中最大子数组和的问题了,采用动态规划的思想来解决,结果呢,只通过了10%左右,感觉很不可思议,于是重新读题发现不对了,人家说的是三个数字的乘积我这里动态规划的是两个数字的乘积,改成了三个数字的成绩也不对,瞬间郁闷了,不知道问题出现在了哪里,就只好自己在草
思路:先找到三个最大的数,求出乘积max1。再找两个最小的数,想乘后再乘以最大的数,得到乘积max2. 最终返回max1 max2的较大者 public static int maxThree(int[] arr){ //a[0]不用 int[] a=new int[4]; a[1]=arr[0]; a[2]=arr[1]; a[3]=arr[2]; if(a[1] in
要求: 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: 24 注意: 1.给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 2.输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。 思路: 排序之后最大乘积就两种情况:1、如果全是正数就是最后三个数相乘 2、如果有负数最大的乘机要么是最后三个数相乘,要么是两个最小的负数相乘再乘以最大的正数
要求:给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 题目来源:力扣(LeetCode) 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: 24 注意: 给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。 输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。 分析:既然是求这个数组里最大的三个数的乘积,1.假设只有正整数: 先将数组排序从小到大依次排序即可求出最大的三位数的乘积 2.假设有负