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
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
2
3
# 測資二
+ 輸入: nums = [1,5,4,5]
+ 輸出: 16
- 解釋: 如果指數 i = 1 和 j = 3(索引值從0開始),可以得到最大值,(5-1)*(5-1) = 16 。
1
2
3
2
3
# 測資三
+ 輸入: nums = [3,7]
+ 輸出: 12
1
2
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
2
3
4
5
6
7
8
9
10
# 相關文章
編輯 (opens new window)
上次更新: 2022/11/22, 22:11:00