博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 628. 三个数的最大乘积
阅读量:6238 次
发布时间:2019-06-22

本文共 1348 字,大约阅读时间需要 4 分钟。

使用归并排序和快速排序:时间复杂度为O(nlogn),快排132ms,归并880ms,stl 的sort() 80ms

考虑到负数,最大值有两种情况:两个负数一个正数相乘,或者三个正数相乘,取两个的最大值

class Solution {public:    int findpivot(vector
&nums,int start,int end){ int pivot=nums[start]; int i=start,j=end; while(i
=pivot) j--; nums[i]=nums[j]; while(i
<=pivot) i++; nums[j]=nums[i]; } nums[i]=pivot; return i; } void quicksort(vector
&nums,int start,int end){ if(start>=end) return; int pivotkey=findpivot(nums,start,end); quicksort(nums,start,pivotkey-1); quicksort(nums,pivotkey+1,end); } void merge(vector
&nums,int start,int mid,int end){ vector
tmp; int i=start,j=mid+1; while(i<=mid&&j<=end){ if(nums[i]
&nums,int start,int end){ if(start==end) return; int mid=(end-start)/2+start; mergesort(nums,start,mid); mergesort(nums,mid+1,end); merge(nums,start,mid,end); } int maximumProduct(vector
& nums) { int len=nums.size(); if(len<3) return 0; //mergesort(nums,0,len-1); quicksort(nums,0,len-1); //sort(nums.begin(),nums.end()); return max(nums[0]*nums[1]*nums[len-1],nums[len-3]*nums[len-2]*nums[len-1]); } };

 

转载于:https://www.cnblogs.com/joelwang/p/10845012.html

你可能感兴趣的文章
SpringBoot整合Scala构建Web服务
查看>>
Gradle简介和安装
查看>>
使用Jmeter开发app端接口自动化案例实战
查看>>
[转载] 英语科技论文写作——Method and Methodology
查看>>
tomcat6+awstats+win7配置成功
查看>>
对前面的自定义的toast制作拖拽效果,以及双击居中效果
查看>>
php 文件目录操作
查看>>
一个人的心态决定你的人生百分度
查看>>
lsyncd配置文件
查看>>
Java基础学习总结(7)——Object类
查看>>
OPEN SSH升级小结(针对SUSE REDHAT linux系统)
查看>>
Myeclipse优化配置
查看>>
RabbitMQ学习总结(7)——Spring整合RabbitMQ实例
查看>>
Notepad++ 快捷键大全
查看>>
Oracle统计求和
查看>>
在Android搭建简单的服务器
查看>>
智能合约编程/Dapp漏洞 --Unexpected Ether
查看>>
perl写的tcp连接数
查看>>
Windows 7自带截图工具技巧两则
查看>>
如何规划构建一套大型的Citrix桌面虚拟化架构 - 后记
查看>>