[leetcode]628. Maximum Product of Three Numbers

来源:互联网 发布:我的世界手机java版 编辑:程序博客网 时间:2024/05/21 09:58

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

方法一:先排序,考虑数组正负情况, 有点啰嗦但逻辑易懂

int maximumProduct(vector<int>& nums)  {    sort(nums.begin(),nums.end());    int len = nums.size();        int a,b,c;    c = nums[len-1];    b = nums[len-2];    a = nums[len-3];    if(a>0)return  max(nums[0]*nums[1]*c,a*b*c);    else if( a ==0 )    {      if(len==3)return 0;      if(len>=5)return nums[len-5]*nums[len-4]*c;//l两个负数      else return a*b*c;    }    else if(a<0)    {      if(c<0 )return a*b*c;      if(c>=0 &&b<0 )return nums[0]*nums[1]*c;      if(c>=0 && b>0 &&len>=4)return nums[0]*nums[1]*c;      if(c>=0 && b>0 &&len==3)return a*b*c;    }        return 0;  }

方法2:精简版

public int maximumProduct(int[] nums) {         Arrays.sort(nums);        int n = nums.length;        int s = nums[n-1] * nums[n-2] * nums[n-3];        s = Math.max(s, nums[n-1] * nums[n-2] * nums[0]);        s = Math.max(s, nums[n-1] * nums[1] * nums[0]);        s = Math.max(s, nums[2] * nums[1] * nums[0]);        return s;    }




阅读全文
1 0
原创粉丝点击