三个数的最大乘积

给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。

  • 示例 1:
输入: [1,2,3]
输出: 6
  • 示例 2:
输入: [1,2,3,4]
输出: 24
  • 注意:

给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]
输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。

  • 先排序
class Solution {
public:void quickSort(vector<int>& nums, int low, int high) {if (high <= low) {return;}int key = nums[low];int i = low;int j = high+1;while(true) {while(nums[++i] < key) {if (i == high) {break;}}while(nums[--j] > key) {if (j == low) {break;}}if (i >=j ) {break;}int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}nums[low] = nums[j];nums[j] = key;quickSort(nums, low, j-1);quickSort(nums, j+1, high);}int maximumProduct(vector<int>& nums) {quickSort(nums, 0, nums.size()-1);return max(nums[nums.size()-1] * nums[nums.size()-2] * nums[nums.size()-3], nums[nums.size()-1] * nums[0] * nums[1]);}
};
  • 线性扫描
class Solution {
public:int maximumProduct(vector<int>& nums) {int min1 = INT_MAX, min2 = INT_MAX;int max1 = INT_MIN, max2 = INT_MIN, max3 = INT_MIN;for (const auto& num: nums) {if (num < min1) {min2 = min1;min1 = num;} else if (num < min2) {min2 = num;}if (num > max1) {max3 = max2;max2 = max1;max1 = num;} else if (num > max2) {max3 = max2;max2 = num;} else if (num > max3){max3 = num;}}return max(max1 * max2 * max3, max1 * min1 * min2);}
};

来源:力扣(LeetCode)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VB.NET 数组的定义 动态使用 多维数组

我们都知道在全部程序设计语言中数组都是一个非常重要的概念&#xff0c;数组的作用是同意程序猿用同一个名称来引用多个变量&#xff0c;因此採用数组索引来区分这些变量。非常多情况下利用数组索引来设置一个循环&#xff0c;这样就能够高效地处理复杂的情况&#xff0c;因此…

web.xml 中的listener、 filter、servlet 加载顺序

1&#xff1a;首先是context-param节点 2&#xff1a;接着配置和调用listeners 并开始监听 3&#xff1a;然后配置和调用filters filters开始起作用 4&#xff1a;最后加载和初始化配置在load on startup的servlets转载于:https://www.cnblogs.com/dwchenxj/p/4787717.html

这么多个月,我头一次体验用类的概念来写驱动

原来感觉一样是那么爽阿。。。快乐得不得了。。。转载于:https://www.cnblogs.com/suanguade/p/4038190.html

设置Chrome忽略网站证书错误

本人在XP下使用Chrome。总是莫名其妙的提示整数错误&#xff0c;一部分https网站无法直接访问。网上找了下&#xff0c;把解决思路记录下来。 解决这个问题很简单,只需要修改你平时用来启动Chrome的快捷方式就可以忽略掉证书错误. 具体的操作方法是这样的: 找到你的Chrome快捷方…

Android开发之合并文件的几种方式

以下介绍合并文件的几种方式&#xff0c;并通过合并amr文件来举例介绍合并文件的详细流程。amr格式的文件头是6字节&#xff0c;所以在进行文件合并的时候要减去除第一个文件以外的其它文件的文件头。 注意&#xff1a;不同文件的文件头是不一样的&#xff0c;所以在合并的时候…

数组中出现次数超过一半的数

数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2限制&#xff1a; 1 < 数组长度 < 50000class Solution { pub…

中国寒龙反网络病毒联盟核心小组:官方公告,近期本站将会发布各种编程技术视频教程,详情请点击我们的以下公告!...

大家好&#xff0c;我是中国寒反网络病毒联盟官方客服&#xff01; 近期&#xff0c;本站将全面升级&#xff0c;本站发布各种编程视频教程&#xff0c;包括C,c#以及VB&#xff0c;VB.net&#xff0c;E&#xff0c;等相关编程语言入门视频教程&#xff0c;每天会定期更新视频教…

javascript学习-原生javascript的小特效(多个运动效果整理)

以下代码就不详细解析了&#xff0c;在我之前的多个运动效果中已经解析好多次了&#xff0c;重复的地方这里就不说明了&#xff0c;有兴趣的童鞋可以去看看之前的文章《原生javascript的小特效》 <!DOCTYPE HTML> <html lang"en-US"> <head> <m…

linux在指定目录多个文件中搜索关键字

find 文件目录 -name *.* -exec grep xxx {} -n\;# -n显示行号find 文件目录 -name *.* | xargs grep xxx -ngrep xxx 文件目录 -Rngrep xxx find 文件目录 -name *.*

$ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略

博主之前写过一篇文章《html5与EmguCV前后端实现——人脸识别篇》&#xff0c;叙述的是opencv和C#的故事。最近在公司服务器上更新了一套nodejs环境&#xff0c;早就听闻npm上有opencv模块&#xff0c;便欲部署之。然而opencv的部署似乎从来都不会那么顺利...... 找模块上https…

android学习——GestureDetector.OnGestureListener 详解

Android Touch Screen 与传统Click Touch Screen不同&#xff0c;会有一些手势(Gesture)&#xff0c;例如Fling&#xff0c;Scroll等等。这些Gesture会使用户体验大大提升。Android中的Gesture识别(detector)是通过GestureDetector.OnGestureListener接口实现的。 首先&#xf…

关于安卓一键分享的,急求帮助!

问题描述现在要做一个项目&#xff0c;设置里面点击一个按钮就可以分享&#xff0c;有三个分享平台&#xff0c;新浪微博&#xff0c;微信和微信朋友圈现在的问题是我要在三个平台分享的内容不同&#xff0c;在新浪微博中分享的是一段文字叙述和一个网页链接&#xff1b;而在微…

和可被 K 整除的子数组

给定一个整数数组 A&#xff0c;返回其中元素之和可被 K 整除的&#xff08;连续、非空&#xff09;子数组的数目。 示例&#xff1a; 输入&#xff1a;A [4,5,0,-2,-3,1], K 5 输出&#xff1a;7 解释&#xff1a; 有 7 个子数组满足其元素之和可被 K 5 整除&#xff1a;…

前端进阶路线图

CSS不能编程&#xff1f;用Less、Sass、Stylus、甚至直接用 Absurd&#xff0c;框架除了Bootstrap还有很多。JS写多了很麻烦&#xff1f;jQuery。移动开发&#xff1f;Zepto.js。结构不好&#xff1f;找框架&#xff0c;Backbone.js是MVC&#xff0c;AngularJS和Ember.js是MVVM…

流媒体直播服务LSS

流媒体直播服务LSS posted on 2014-10-22 11:23 实验室 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/labs/p/4042641.html

Win7安装vs2010失败

提示&#xff1a; --------------------------------------------------------------------------------------------------------------------------------------- 解决方法&#xff1a;开始运行中regedit打开注册表找到HKEY_LOCAL_MACHINE/System/CurrentControlSet/Control …

调光设备术语:调光曲线(转)

源&#xff1a;调光设备术语&#xff1a;调光曲线 核心提示&#xff1a;调光曲线是调光设备重要的参数之一&#xff0c;它直接影响到了灯光输出的效果&#xff0c;是数字化调光设备性能的体现。上面这句话包含了三点内容&#xff0c;我们逐条解析。 调光曲线是调光设备重要的参…

深入浅出理解QTimeLine类

网上找了下QTimeLIne类的介绍&#xff0c;要么就是代码一贴自己看去&#xff0c;要么就是说不到重点&#xff0c;正巧自己项目遇到这个类&#xff0c;在这里写一下&#xff0c;给需要的同学看下。 因为我最近需要有动画方面配合时间间隔触发QGraphicsView框架的需求&#xff0c…

0909编译原理

1.编译原理学什么&#xff1f; 编译原理是计算机专业的一门重要专业课&#xff0c;旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 2.为什么学编译原理&#xff1f; 这门…

何为动态绑定(转)

动态绑定只是叫法不同&#xff0c;你可以理解为多态&#xff01;例如&#xff0c;有一个抽像fruit水果父类&#xff0c;其中定义了一个方法抽像eat方法&#xff0c;而apple继承fruit并实现fruit的eat方法&#xff0c;而banana继承fruit并实现fruit的eat方法&#xff0c;外部调用…