[LeetCode] 0016. 3Sum 가장 가까운

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

중간

 


정수 배열이 주어지면 숫자 길이의 N 그리고 정수 목표, 에서 세 개의 정수를 찾으세요. 숫자 그 합이 에 가장 가까워지도록 목표.

반품 세 정수의 합.

각 입력에는 정확히 하나의 솔루션이 있다고 가정할 수 있습니다.

예시 1:

입력: 숫자 = [-1,2,1,-4], 대상 = 1
산출: 2
설명: 목표에 가장 가까운 합은 2입니다. (-1 + 2 + 1 = 2)

예 2:

입력: 숫자 = [0,0,0], 대상 = 1
산출: 0
설명: 목표에 가장 가까운 합은 0입니다. (0 + 0 + 0 = 0)

제약:

  • 3 <= 숫자.길이 <= 500
  • -1000 <= 숫자[i] <= 1000
  • -10 4 <= 목표 <= 10 4

파이썬

				
					# 시간 복잡도: O(n) # 공간 복잡도: O(n) fromtyping import List class Solution(object): def maxProfit(self, 가격: List[int]) -> int: if len(prices) <= 1 : 0 반환 leftMin = 가격[0] rightMax = 가격[-1] length = len(price) leftProfits = [0] * 길이 rightProfits = [0] * (length + 1) for l in range(1, length): leftProfits[l] = max(leftProfits[l - 1], 가격[l] - leftMin) leftMin = min(leftMin, 가격[l]) r = 길이 - 1 - l rightProfits[r] = max(rightProfits[r + 1], rightMax - 가격[r]) rightMax = max(rightMax, 가격[r]) maxProfit = 0 print(leftProfits) print(rightProfits) for i in range(0, length): maxProfit = max(maxProfit, leftProfits[ i] + rightProfits[i + 1]) maxProfit 가격 = [7, 1, 5, 3, 6, 4]를 반환합니다. # leftProfit = [0, 0, 4, 4, 5, 5] # rightProfit = [5, 5 , 3, 3, 0, 0, 0] print(Solution().maxProfit(price))
				
			
ko_KR한국어