LC2824 統計和小于目標的下標對數目
1 題目
給你一個下標從 0 開始長度為 n 的整數數組 nums 和一個整數 target ,請你返回滿足 0 <= i < j < n 且 nums[i] + nums[j] < target 的下標對 (i, j) 的數目。
示例 1:
輸入:nums = [-1,1,2,3,1], target = 2
輸出:3
解釋:總共有 3 個下標對滿足題目描述:
- (0, 1) ,0 < 1 且 nums[0] + nums[1] = 0 < target
- (0, 2) ,0 < 2 且 nums[0] + nums[2] = 1 < target
- (0, 4) ,0 < 4 且 nums[0] + nums[4] = 0 < target
注意 (0, 3) 不計入答案因為 nums[0] + nums[3] 不是嚴格小于 target 。
示例 2:
輸入:nums = [-6,2,5,-2,-7,-1,3], target = -2
輸出:10
解釋:總共有 10 個下標對滿足題目描述:
- (0, 1) ,0 < 1 且 nums[0] + nums[1] = -4 < target
- (0, 3) ,0 < 3 且 nums[0] + nums[3] = -8 < target
- (0, 4) ,0 < 4 且 nums[0] + nums[4] = -13 < target
- (0, 5) ,0 < 5 且 nums[0] + nums[5] = -7 < target
- (0, 6) ,0 < 6 且 nums[0] + nums[6] = -3 < target
- (1, 4) ,1 < 4 且 nums[1] + nums[4] = -5 < target
- (3, 4) ,3 < 4 且 nums[3] + nums[4] = -9 < target
- (3, 5) ,3 < 5 且 nums[3] + nums[5] = -3 < target
- (4, 5) ,4 < 5 且 nums[4] + nums[5] = -8 < target
- (4, 6) ,4 < 6 且 nums[4] + nums[6] = -4 < target
提示:
1 <= nums.length == n <= 50-50 <= nums[i], target <= 50
2 解答
class Solution:
def countPairs(self, nums: List[int], target: int) -> int:
#雙指針
nums.sort()
n = len(nums)
i = 0 #left
j = n-1 #right\
res = 0
while 0<=i and i<j and j<n:
if nums[i] + nums[j] < target:
res += j - i
i += 1
else :
j -= 1
return res

浙公網安備 33010602011771號