给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现
实现该算法主要思想是,
1.两个负数与与一个正数相乘
2.全为最大正数相乘得到最大值
package com.meituan.test;
public class Test {
public static void main(String[] args) {
int[] arr = { -10, -1, 0, 2, 34, 1, 10, 8, 9 };
getMax(arr);
}
public static void getMax(int[] arr) {
int max = 1, second_max = 1, third_max = 1;
int min = 1, second_min = 1;
for (int i = 0; i < arr.length; i++) {
if (max < arr[i]) {
third_max = second_max;
second_max = max;
max = arr[i];
} else if (second_max < arr[i]) {
third_max = second_max;
second_max = arr[i];
} else if (third_max < arr[i]) {
third_max = arr[i];
} else if (arr[i] < min) {
second_min = min;
min = arr[i];
} else if (arr[i] < second_min) {
second_min = arr[i];
}
}
int max1=max*second_max*third_max;
int max2=max*second_min*min;
if(max1>=max2){
System.out.println("max:"+max+" second_max:"+second_max+" third_max:"+third_max+" result:"+max1);
}else{
System.out.println("max:"+max+" second_min:"+second_min+" min:"+min+" result:"+max2);
}
}
}
结果:
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现相关推荐
- 牛客网:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
题目描述 给定一个无序数组,包含正数.负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1) 输入描述: 无序整数数组A[n] 输出描述: 满足条件的最大乘积 ...
- 基础算法:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
这里要注意的是当数字足够大的时候,我们要使用long long形式的类型,用来记录那个最大值 最大值共有四种情况: 三个正数:数字本身越大则乘积越大 两个负数一个正数:负负得正,所以两个负数最小,之积 ...
- 2020-06-10:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数? 如果上面那题里面有两个单数,怎么求出来?
1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test22_singlenumber3import ("fmt""test ...
- 2020-06-09:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数?
1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test21_singlenumberimport ("fmt""testi ...
- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
题目描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和. 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 ...
- 给定一个整数数组,判断是否存在重复元素。
存在重复元素 给定一个整数数组,判断是否存在重复元素. 如果存在一值在数组中出现至少两次,函数返回 true .如果数组中每个元素都不相同,则返回 false 示例 1: 输入: [1,2,3,1] ...
- 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标
题目链接:https://leetcode-cn.com/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-2/ 给定一个整数数组 nums ...
- 有苦有乐的算法 --- 一个无序数组,如果从小到大排好序,任何一个元素任何一个元素移动索引长度不超过k,实现排序
题目 一个无序数组,如果从小到大排好序,任何一个元素任何一个元素移动索引长度不超过k,实现从小到大排序 例: k=2 排序后,[4]移动2个索引,[6]移动2个索引,[1]移动2个索引,[3]移动2个 ...
- python步骤解析 给定一个整数数组和目标值_给定一个整数数组和一个目标值,找出数组中和为目标值的两个数 例如给定nums = [2,7,11,15],target = 9...
python解决方案 nums = [1,2,3,4,5,6] #假如这是给定的数组 target = 9 #假如这是给定的目标值 num_list = [] #用来装结果的容器 def run(nu ...
最新文章
- CTFshow 命令执行 web122
- 【PPT 下载】神策 2017 数据驱动大会干货限时分享!
- CRF++使用简介(windows下非接口)
- spring常见面试问题_Spring面试问题
- 1.0 Hadoop的介绍、搭建、环境
- Ubuntu 安装 chrome
- Maven项目构建练习
- [ZJOI2005]午餐 贪心+dp
- python时间序列模型有哪些_时间序列模型(ARIMA)
- php 根目录怎么写,php – 如何重写根目录中的目录
- 注册测绘师学习笔记(二)
- Java性能调优指南pdf阅读0-100页
- 蓝桥杯 算法训练 调和数列问题
- 高斯启发式Gaussian Heuristic 格理论相关知识
- deadline集群渲染_Maya笔记
- 使用mysql管理系统建表时,字段中有PK,NN,UQ,BIN,UN,ZF,AI基本字段类型标识的意义
- Ubuntu 下图像标注工具 labelImg 的安装及使用
- AtCoder Beginner Contest 165 D Floor Function 公式推导
- 版署:近期将清理所有未经审查进口游戏
- 三分钟了解interface和type的区别