[LeetCode] Maximum Product of Two Elements in an Array

준규·2022년 12월 19일

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.풀이

  1. 배열을 내림차순 정렬한다.
  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.결과

profile
안녕하세요 :)

0개의 댓글