Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 nums[i] + nums[j] + (i -j)가 최대화되는 쌍(i, j)을 찾는 프로그램은?

<시간/>

nums라는 숫자 목록이 있다고 가정하고 i

따라서 입력이 nums =[6, 6, 2, 2, 2, 8]과 같으면 출력은 11이 됩니다. 마치 두 개를 선택하면 6의 점수는 6 + 6 + 0 - 1 =11이 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • 큰 :=숫자[0]

  • 최대치 :=0

  • 범위 1에서 숫자 크기까지의 i에 대해

    • 큰 :=큰 - 1

    • maxi :=Large + nums[i] 및 maxi의 최대값

    • Large :=Large 및 nums[i]

      의 최대값
  • 최대 반환

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

예시

class Solution:
   def solve(self, nums):
      large = nums[0]

      maxi = 0
      for i in range(1, len(nums)):
         large -= 1
         maxi = max(large + nums[i], maxi)
         large = max(large, nums[i])

      return maxi

ob = Solution()
nums = [6, 6, 2, 2, 2, 8]
print(ob.solve(nums))

입력

[6, 6, 2, 2, 2, 8]

출력

11