牛客网:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
题目描述
给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
输入描述:
无序整数数组A[n]
输出描述:
满足条件的最大乘积
示例1
输入
3 4 1 2
输出
24
代码:
#!D:/workplace/python
# -*- coding: utf-8 -*-
# @File : 最大乘积.py
# @Author: WangYe
# @Date : 2019/2/21
# @Software: PyCharm# 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
a = input()
list_temp = list(a.split(' '))
while ' ' in list_temp:list_temp.remove(' ')print(list_temp)
length = len(list_temp)for u in range(length):list_temp[u] = int(list_temp[u])list_temp.sort()
print(list_temp)
res = 0
# for i in range(length):
# for k in range(length):
# if i == k:
# continue
# for m in range(length):
# if i==m or m ==k:
# continue
# else:
# temp = list_temp[i]*list_temp[k]*list_temp[m]
# if temp>res:
# print(i,k,m)
# res = temp
# else:
# continue
#case 最大的相乘
res1 = list_temp[length-1]*list_temp[length-2]*list_temp[length-3]
#双负数相乘再加一个最大成正数
res2 = list_temp[0] *list_temp[1] *list_temp[length-1]
if res1>res2:res = res1
else:res = res2print(res)
牛客网:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)相关推荐
- 基础算法:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
这里要注意的是当数字足够大的时候,我们要使用long long形式的类型,用来记录那个最大值 最大值共有四种情况: 三个正数:数字本身越大则乘积越大 两个负数一个正数:负负得正,所以两个负数最小,之积 ...
- 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现
实现该算法主要思想是, 1.两个负数与与一个正数相乘 2.全为最大正数相乘得到最大值 下面用算法实现,时间复杂度为O(n),下面用java实现,不过有一些为0的情况排除下可以,还有一些整形过大可以变为 ...
- 牛客网 18 二维数组中的查找
这一题其实也没啥好说的,就是一个走迷宫的问题.利用分治的思想,将大问题分解为一步步的小问题,关键还是如何分和几个特解的关注: 两种思路: 1.从左下开始走,对于上方元素比他小,对于右方元素比他大,官网 ...
- 2020-06-10:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数? 如果上面那题里面有两个单数,怎么求出来?
1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test22_singlenumber3import ("fmt""test ...
- 2020-06-09:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数?
1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test21_singlenumberimport ("fmt""testi ...
- Java面试题:1-100之间的数,被放在数组a[99]中,有一个数没有包含在其中,用java代码找出这个数...
查看复制到剪切板打印 import java.util.Random; /** * 查找缺失的一个数字 * @author 老紫竹 java2000.net * */ public class Tes ...
- 牛客网拼多多校招最大乘积
链接:https://www.nowcoder.com/questionTerminal/5f29c72b1ae14d92b9c3fa03a037ac5f 来源:牛客网 给定一个无序数组,包含正数.负 ...
- 牛客笔试-每一个 i 位置左边和右边离 i 位置最近
链接:https://www.nowcoder.com/questionTerminal/2a2c00e7a88a498693568cef63a4b7bb 来源:牛客网 给定一个可能含有重复值的数组 ...
- 寻找第K大 --- 牛客网
寻找第K大 题目链接 描述 代码 题目链接 https://www.nowcoder.com/questionTerminal/e016ad9b7f0b45048c58a9f27ba618bf 描述 ...
最新文章
- 【HTML/XML 11】XML和HTML的混合使用
- JavaScript的undefined
- Golang slice和map的申明和初始化
- apche commons项目简介
- 今日代码(20210313)--美赛代码记录
- mysql读写分离 存储过程_基于maxscale的读写分离部署笔记
- 谷歌浏览器怎么网页截图
- 绿幕通通扔掉 ੧ᐛ੭ | 谷歌AI实时「抠」背景
- symfony ajax,如何在php或symfony中使用jQuery ajax上传文件
- log4net 不生成日志文件的解决办法
- 2019最新论文阅读-BlazeFace:面向移动设备的实时人脸检测
- oppoa1计算机记录删了怎么办,捡到oppoA1怎么解锁
- java odbc timesten_TimesTen ODBC 链接库差异及相关命令行工具的使用注意事项
- 伟大时刻:小米的命门
- 浏览器极速模式和兼容模式差异
- 微讲师录课软件下载、录屏软件下载
- 三星mega2 android os,三星G7508Q (Galaxy Mega 2 双4G)一键救砖教程,轻松刷回官方系统...
- GeoServer发布OSM地图
- Navicat 全部产品破解方法(MySQL/PostgreSQL等所有navicat的产品均可破解)
- python制作简单动画_Python tkinter Canvas绘制动画