1.문제
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).
정수 배열이 주어질 때 서로다른 인덱스의 가장 큰 값 두 숫자에 각각 1씩을 뺀 곱을 리턴하는 문제이다.
Example 1
Input: nums = [3,4,5,2]
Output: 12
Explanation: If you choose the indices i=1 and j=2 (indexed from 0), you will get the maximum value, that is, (nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12.
Example 2
Input: nums = [1,5,4,5]
Output: 16
Explanation: Choosing the indices i=1 and j=3 (indexed from 0), you will get the maximum value of (5-1)*(5-1) = 16.
Example 3
Input: nums = [3,7]
Output: 12
Constraints:
- 2 <= nums.length <= 500
- 1 <= nums[i] <= 10^3
2.풀이
- 배열을 내림차순 정렬한다.
- 배열의 0 번 , 1 번 인덱스의 수에 1씩을 뺀다음 곱해서 리턴한다.
/**
* @param {number[]} nums
* @return {number}
*/
const maxProduct = function (nums) {
nums.sort((a, b) => b - a); // 내림차순 정렬
return (nums[0] - 1) * (nums[1] - 1); // 배열의 앞에서 두개 숫자 -1 값을 곱해서 리턴
};
3.결과
