当前位置: 面试刷题>> 两数和小于或等于目标值 (经典算法题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));
```
### 码小课
码小课网站中提供了更多关于算法和数据结构的学习内容,包括各种经典问题的解析和实战案例,非常适合初学者和进阶者学习。希望这些示例代码和网站资源能帮助你更好地掌握算法知识。