Python程式:查詢小於目標值的兩個數字之和
假設我們有一個名為nums的數字列表和一個目標值,我們需要找到nums中最大的一對數字的和,其和最多為(目標值-1)。
例如,如果輸入為nums = [8, 3, 4, 9, 2],目標值= 8,則輸出為7,因為小於8的最大數字對的和是4 + 3 = 7。
為了解決這個問題,我們將遵循以下步驟:
- 對列表nums進行排序
- p1 := 0
- p2 := nums的大小 - 1
- m := -∞
- 當p1 < p2時,執行以下操作:
- 如果nums[p1] + nums[p2] < 目標值,則
- m := m和(nums[p1] + nums[p2])中的最大值
- p1 := p1 + 1
- 否則:
- p2 := p2 - 1
- 如果nums[p1] + nums[p2] < 目標值,則
- 返回m
示例
讓我們來看下面的實現,以便更好地理解:
import math def solve(nums, target): nums.sort() p1 = 0 p2 = len(nums) - 1 m = -math.inf while p1 < p2: if nums[p1] + nums[p2] < target: m = max(m, nums[p1] + nums[p2]) p1 += 1 else: p2 -= 1 return m nums = [8, 3, 4, 9, 2] target = 8 print(solve(nums, target))
輸入
[8, 3, 4, 9, 2], 8
輸出
7
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP