Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク
整数配列が与えられた場合 数字
長さの n
そして整数 ターゲット
で 3 つの整数を見つけます。 数字
合計が最も近くなるように ターゲット
.
戻る 3 つの整数の合計.
各入力には正確に 1 つの解があると想定できます。
例 1:
入力: 数値 = [-1,2,1,-4]、ターゲット = 1 出力: 2 説明: ターゲットに最も近い合計は 2 です (-1 + 2 + 1 = 2)。
例 2:
入力: 数値 = [0,0,0]、ターゲット = 1 出力: 0 説明: ターゲットに最も近い合計は 0 です (0 + 0 + 0 = 0)。
制約:
3 <= nums.length <= 500
-1000 <= nums[i] <= 1000
-10 4 <= ターゲット <= 10 4
パイソン
# 時間計算量: O(n) # 空間計算量: 入力による O(n) import リスト クラス Solution(object): def maxProfit(self, 価格: List[int]) -> int: if len(prices) <= 1 : 0 を返します leftMin = 価格[0] rightMax = 価格[-1] length = len(価格) 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(prices))