628. Maximum Product of Three Numbers
来源:互联网 发布:炒股模拟软件app 编辑:程序博客网 时间:2024/06/07 02:18
- Maximum Product of Three Numbers
- Problem
- Implementation
628. Maximum Product of Three Numbers
Problem
Given an integer array, find three numbers whose product is maximum and output the maximum product.
Example 1:
Input: [1,2,3]Output: 6
Example 2:
Input: [1,2,3,4]Output: 24
Note:
The length of the given array will be in range [3,104] and all elements are in the range [-1000, 1000].
Multiplication of any three numbers in the input won’t exceed the range of 32-bit signed integer.
Implementation
class Solution {public: int maximumProduct(vector<int>& nums) { int res = 0; int len = nums.size(); if(len < 3) return res; else if(len == 3) return nums[0]*nums[1]*nums[2]; res = INT_MIN; sort(nums.begin(), nums.end()); int num_neg = 0; int num_pos = 0; bool has_zero = false; for(int idx = 0; idx < len; idx++) { if(nums[idx] < 0) { num_neg++; } else if(nums[idx] > 0) { num_pos = len - idx; break; } else { has_zero = true; } } int choice1 = nums[len-1]*nums[len-2]*nums[len-3]; int choice2 = nums[0]*nums[1]; if(!num_neg || num_neg == 1) { return choice1; } else { return choice2*nums[len-1] > choice1?choice2*nums[len-1]:choice1; } // The above can be simplified with // choice2*nums[len-1] > choice1?choice2*nums[len-1]:choice1; /* Brute force will cause time exceed for(int idx1 = 0; idx1 < len - 2; idx1++) { for(int idx2 = idx1 + 1; idx2 < len - 1; idx2++) { int inter1 = nums[idx1]*nums[idx2]; for(int idx3 = idx2 + 1; idx3 < len; idx3++) { int tmp = inter1*nums[idx3]; if(tmp > res) res = tmp; } } } */ return res; }};
阅读全文
0 0
- [leetcode]628. Maximum Product of Three Numbers
- leetcode#628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- leetcode: 628. Maximum Product of Three Numbers
- leetcode 628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- [LeetCode] 628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- 628. Maximum Product of Three Numbers
- [leetcode]628. Maximum Product of Three Numbers
- LeetCode 628. Maximum Product of Three Numbers
- leetcode -- 628. Maximum Product of Three Numbers
- [LeetCode]628. Maximum Product of Three Numbers
- [LeetCode]628. Maximum Product of Three Numbers
- 如何拆掉受害这堵墙
- 解决RecyclerView复用导致EdittText、CheckBox等显示异常的问题
- BZOJ 3065: 带插入区间K小值
- [Microsoft] Linked List Cycle
- 单例设计模式
- 628. Maximum Product of Three Numbers
- 同余的基本定理
- 深度学习库的安装
- Linux 目录及文件基础命令操作
- MyEclipse无法导出WAR包
- (63)ListIterator用法、List均有的增删改查
- leetcode 70. Climbing Stairs
- 爬取妹子图(python):爬虫(bs+rq)+ gevent多线程
- Mybatis逆向生成文件