题目描述

给定一个无序数组,包含正数、负数和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)相关推荐

  1. 基础算法:给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)

    这里要注意的是当数字足够大的时候,我们要使用long long形式的类型,用来记录那个最大值 最大值共有四种情况: 三个正数:数字本身越大则乘积越大 两个负数一个正数:负负得正,所以两个负数最小,之积 ...

  2. 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大 java实现

    实现该算法主要思想是, 1.两个负数与与一个正数相乘 2.全为最大正数相乘得到最大值 下面用算法实现,时间复杂度为O(n),下面用java实现,不过有一些为0的情况排除下可以,还有一些整形过大可以变为 ...

  3. 牛客网 18 二维数组中的查找

    这一题其实也没啥好说的,就是一个走迷宫的问题.利用分治的思想,将大问题分解为一步步的小问题,关键还是如何分和几个特解的关注: 两种思路: 1.从左下开始走,对于上方元素比他小,对于右方元素比他大,官网 ...

  4. 2020-06-10:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数? 如果上面那题里面有两个单数,怎么求出来?

    1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test22_singlenumber3import ("fmt""test ...

  5. 2020-06-09:给定一个无序数组,里面数都是成双数的,只有一个数是成单数的,求这个数?

    1.异或 2.字典或集合 3.排序 golang语言采用异或方式,代码如下: package test21_singlenumberimport ("fmt""testi ...

  6. Java面试题:1-100之间的数,被放在数组a[99]中,有一个数没有包含在其中,用java代码找出这个数...

    查看复制到剪切板打印 import java.util.Random; /** * 查找缺失的一个数字 * @author 老紫竹 java2000.net * */ public class Tes ...

  7. 牛客网拼多多校招最大乘积

    链接:https://www.nowcoder.com/questionTerminal/5f29c72b1ae14d92b9c3fa03a037ac5f 来源:牛客网 给定一个无序数组,包含正数.负 ...

  8. 牛客笔试-每一个 i 位置左边和右边离 i 位置最近

    链接:https://www.nowcoder.com/questionTerminal/2a2c00e7a88a498693568cef63a4b7bb 来源:牛客网 给定一个可能含有重复值的数组 ...

  9. 寻找第K大 --- 牛客网

    寻找第K大 题目链接 描述 代码 题目链接 https://www.nowcoder.com/questionTerminal/e016ad9b7f0b45048c58a9f27ba618bf 描述 ...

最新文章

  1. 【HTML/XML 11】XML和HTML的混合使用
  2. JavaScript的undefined
  3. Golang slice和map的申明和初始化
  4. apche commons项目简介
  5. 今日代码(20210313)--美赛代码记录
  6. mysql读写分离 存储过程_基于maxscale的读写分离部署笔记
  7. 谷歌浏览器怎么网页截图
  8. 绿幕通通扔掉 ੧ᐛ੭ | 谷歌AI实时「抠」背景
  9. symfony ajax,如何在php或symfony中使用jQuery ajax上传文件
  10. log4net 不生成日志文件的解决办法
  11. 2019最新论文阅读-BlazeFace:面向移动设备的实时人脸检测
  12. oppoa1计算机记录删了怎么办,捡到oppoA1怎么解锁
  13. java odbc timesten_TimesTen ODBC 链接库差异及相关命令行工具的使用注意事项
  14. 伟大时刻:小米的命门
  15. 浏览器极速模式和兼容模式差异
  16. 微讲师录课软件下载、录屏软件下载
  17. 三星mega2 android os,三星G7508Q (Galaxy Mega 2 双4G)一键救砖教程,轻松刷回官方系统...
  18. GeoServer发布OSM地图
  19. Navicat 全部产品破解方法(MySQL/PostgreSQL等所有navicat的产品均可破解)
  20. python制作简单动画_Python tkinter Canvas绘制动画

热门文章

  1. WUSTOJ 1324: Base64 Coding(Java)未解决,求题解
  2. java web 获取 mac 地址_java web根据访问的ip地址获取MAC地址
  3. 三星s5830i详细刷机教程
  4. 获取优酷、土豆、酷6、6间房等视频
  5. 1650显卡能带动144hz吗_什么显卡能带动1080 144hz的屏幕,所有游戏,全开?
  6. 读书笔记-城市道路交通信号区域均衡控制方法及应用研发
  7. remusic:仿网易云音乐 安卓版
  8. 约瑟夫环问题(基督教徒问题)python
  9. 第二课--EFM32GG11系列--定时器
  10. 生活中常用的图片去水印方法有哪些呢