배열의 두 요소의 최대 곱

제로콜라좋아요·2024년 5월 25일
0

algorithem

목록 보기
6/37

문제설명

정수 배열이 주어지면 해당 배열 의 nums두 가지 다른 인덱스를 선택합니다 . 의 최대값을 반환합니다 . ij (nums[i]-1)*(nums[j]-1)

예시 1:

입력: nums = [3,4,5,2]
출력: 12
설명: 인덱스 i=1 및 j=2(0에서 인덱스됨)를 선택하면 최대값, 즉 (nums[1)을 얻게 됩니다. ]-1)(숫자[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:
    @staticmethod
    def maxProduct(nums):
        max1, max2 = 0, 0
        
        for num in nums:
            if num > max1:
                max2 = max1
                max1 = num
            elif num > max2:
                max2 = num
        
        return (max1 - 1) * (max2 - 1)

<내 코드의 흐름>

  1. 두 개의 가장 큰 수를 0으로 초기화
  2. 입력 리스트의 각 숫자를 반복
  3. 현재 숫자가 지금까지 발견된 가장 큰 수보다 크면
  4. 두 번째로 큰 수를 이전의 가장 큰 수로 업데이트
  5. 가장 큰 수를 현재 숫자로 업데이트
  6. 현재 숫자가 가장 큰 수보다 크지는 않지만
  7. 두 번째로 큰 수보다는 크면
  8. 두 번째로 큰 수를 현재 숫자로 업데이트
  9. (max1 - 1)과 (max2 - 1)의 곱을 계산하고 반환
profile
개발자계의 제로콜라

0개의 댓글