leetcode-陣列中兩元素的最大乘積(Java)

熊貓!=發表於2020-11-13

leetcode-陣列中兩元素的最大乘積(Java)

題目連結

陣列中兩元素的最大乘積

題目描述

給你一個整數陣列 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 = [1,5,4,5]
輸出:16
解釋:選擇下標 i=1 和 j=3(下標從 0 開始),則可以獲得最大值 (5-1)*(5-1) = 16 。

示例3:

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

提示

2 <= nums.length <= 500
1 <= nums[i] <= 10^3

思路與實現

class Solution {
    public int maxProduct(int[] nums) {
        int max1 = 0;               //最大值
        int max2 = 0;               //第二大
        for (int i = 0; i < nums.length; i++) {
            int num = nums[i] - 1;
            if (num > max1) {
                max2 = max1;
                max1 = num;
            }else if (num == max1) {
                max2 = num;
            }else if (num > max2) {
                max2 = num;
            }
        }
        return max1 * max2;
    }
}

相關文章