zoukankan      html  css  js  c++  java
  • 1464. 数组中两元素的最大乘积

    题目:给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。

    示例 1:

    输入:nums = [3,4,5,2]
    输出:12
    解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12 。

    示例 2:

    输入:nums = [3,7]
    输出:12

    1.原创

    class Solution {
    public:
        int maxProduct(vector<int>& nums) {
            if (nums.size()==2)
                return (nums[0]-1)*(nums[1]-1);
            int max_product = 0;
            for (int i=0;i<nums.size()-1;i++){
                for (int j=i+1;j<nums.size();j++){
                    if (((nums[i]-1)*(nums[j]-1))>max_product)
                        max_product = (nums[i]-1)*(nums[j]-1);
                }
            }
            return max_product;
        }
    }; 

    2.题解

    class Solution {
    public:
        int maxProduct(vector<int>& nums) {
            int maxNum = 0;
            int secNum = 0;
            for(int i : nums)
                if( i > maxNum )
                {
                    secNum = maxNum;//第二大的值
                    maxNum = i;  //最大的值
                }
                else if ( i > secNum )
                    secNum = i;
            return (maxNum - 1) * (secNum - 1);
        }
    };
    
    作者:musematics
    链接:https://leetcode-cn.com/problems/maximum-product-of-two-elements-in-an-array/solution/c-shuang-100-bian-li-jie-fa-by-musematics/ 
  • 相关阅读:
    PAT1038
    PAT1034
    PAT1033
    PAT1021
    PAT1030
    PAT1026
    PAT1063
    PAT1064
    PAT1053
    PAT1025
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/14447329.html
Copyright © 2011-2022 走看看