当前位置: 面试刷题>> 两数和小于或等于目标值 (经典算法题500道)


### 题目描述补充 题目:给定一个整数数组 `nums` 和一个整数 `target`,请你在该数组中找出和 **小于或等于** `target` 的两个数的所有 **唯一** 组合,并且返回这些组合。 **注意**: - 每种组合中的元素应以非递减顺序排列(即 `[1,2]` 和 `[2,1]` 被视为相同组合)。 - 结果中不能包含重复的组合。 ### 示例 **输入**: `nums = [2, 7, 11, 15]`, `target = 9` **输出**: `[[2,7]]` **解释**: 数组中只有一对数字的组合 `[2,7]` 的和小于或等于 9。 ### PHP 示例代码 ```php function twoSumLessThanOrEqualToTarget($nums, $target) { $result = []; sort($nums); // 先排序,便于后续处理 $left = 0; $right = count($nums) - 1; while ($left < $right) { $sum = $nums[$left] + $nums[$right]; if ($sum <= $target) { $result[] = [$nums[$left], $nums[$right]]; $left++; // 移动左指针以寻找更多组合 } else { $right--; // 移动右指针以减小和 } } return $result; } // 测试示例 $nums = [2, 7, 11, 15]; $target = 9; print_r(twoSumLessThanOrEqualToTarget($nums, $target)); ``` ### Python 示例代码 ```python def twoSumLessThanOrEqualToTarget(nums, target): nums.sort() # 先排序 result = [] left, right = 0, len(nums) - 1 while left < right: total = nums[left] + nums[right] if total <= target: result.append([nums[left], nums[right]]) left += 1 # 移动左指针 else: right -= 1 # 移动右指针 return result # 测试示例 nums = [2, 7, 11, 15] target = 9 print(twoSumLessThanOrEqualToTarget(nums, target)) ``` ### JavaScript 示例代码 ```javascript function twoSumLessThanOrEqualToTarget(nums, target) { nums.sort((a, b) => a - b); // 先排序 let result = []; let left = 0; let right = nums.length - 1; while (left < right) { const sum = nums[left] + nums[right]; if (sum <= target) { result.push([nums[left], nums[right]]); left++; // 移动左指针 } else { right--; // 移动右指针 } } return result; } // 测试示例 const nums = [2, 7, 11, 15]; const target = 9; console.log(twoSumLessThanOrEqualToTarget(nums, target)); ``` ### 码小课 码小课网站中提供了更多关于算法和数据结构的学习内容,包括各种经典问题的解析和实战案例,非常适合初学者和进阶者学习。希望这些示例代码和网站资源能帮助你更好地掌握算法知识。
推荐面试题