目录

Leetcode 1464. 一個陣列中兩個元素的最大乘積

# 題目

# 原題目

+ 英文:
- Given the array of integers nums, you will choose two different indices i and j of that array. Return the maximum value of (nums[i]-1)*(nums[j]-1).

+ 中文:
- 給定一個整數陣列 nums,請你選擇陣列中兩個不同的指數。回傳 (nums[i]-1)*(nums[j]-1) 的最大值。
- 請回傳 nums 的 累積和。
1
2
3
4
5
6

# 測資一

+ 輸入: nums = [3,4,5,2]
+ 輸出: 12
- 解釋: 如果指數 i = 1 和 j = 3(索引值從0開始),可以得到最大值,(nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12 。 
1
2
3

# 測資二

+ 輸入: nums = [1,5,4,5]
+ 輸出: 16
- 解釋: 如果指數 i = 1 和 j = 3(索引值從0開始),可以得到最大值,(5-1)*(5-1) = 16 。
1
2
3

# 測資三

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

# 解題思路

再這題當中,分成兩個部分:

  • 要找到最大值的索引 i 和第二大值的索引 j。
  • 代入公式 (nums[1]-1)*(nums[2]-1),並回傳結果。

# Java 思路

先排序陣列,即可取得最大值和最小值。套上公式即可。

# Python 思路

跟Java解題思路是一樣的。

# 答案

此題答案以 Java 解!

class Solution {
    public int maxProduct(int[] nums) {
        
        // 先排序陣列
        Arrays.sort(nums);
        
        // 代入公式並回傳
        return (nums[nums.length-1] - 1) * (nums[nums.length-2] - 1);
    }
}
1
2
3
4
5
6
7
8
9
10

# 相關文章

《Leetcode 747. 至少是其他數字兩倍的最大數》

《Leetcode 4. 尋找兩個已排序陣列的中間值》

上次更新: 2022/11/22, 22:11:00
最近更新
01
JS 學習筆記三 - 基本運算
11-24
02
JS 學習筆記二 - Vue API
11-24
03
Leetcode 1480. 一維陣列累積和
10-05
更多文章>