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


题目描述补充

题目:给定一个整数数组 nums 和一个整数 target,请你在该数组中找出和 小于或等于 target 的两个数的所有 唯一 组合,并且返回这些组合。

注意

  • 每种组合中的元素应以非递减顺序排列(即 [1,2][2,1] 被视为相同组合)。
  • 结果中不能包含重复的组合。

示例

输入: nums = [2, 7, 11, 15], target = 9

输出: [[2,7]]

解释: 数组中只有一对数字的组合 [2,7] 的和小于或等于 9。

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 示例代码

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 示例代码

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));

码小课

码小课网站中提供了更多关于算法和数据结构的学习内容,包括各种经典问题的解析和实战案例,非常适合初学者和进阶者学习。希望这些示例代码和网站资源能帮助你更好地掌握算法知识。

推荐面试题