当前位置: 面试刷题>> 螺母(Nuts)和螺栓(Bolts)的问题 (经典算法题500道)


题目描述补充

题目:螺母(Nuts)和螺栓(Bolts)的匹配问题

给定两个数组,一个代表螺母(nuts)的数组,另一个代表螺栓(bolts)的数组。每个螺母和螺栓都有一个对应的尺寸(整数表示)。我们需要找出能够完全匹配(即尺寸相同)的螺母和螺栓的对数。注意,一个螺母只能与一个螺栓匹配,反之亦然。

示例输入

  • 螺母数组:[1, 2, 3, 4, 5]
  • 螺栓数组:[2, 4, 5, 6, 7]

示例输出

  • 匹配的对数:3(因为尺寸为2、4、5的螺母和螺栓各有一对可以匹配)

PHP 示例代码

function matchNutsAndBolts($nuts, $bolts) {
    $nutCount = count($nuts);
    $boltCount = count($bolts);
    $matches = 0;

    // 使用关联数组记录螺栓的数量,方便快速查找
    $boltCounts = array_count_values($bolts);

    foreach ($nuts as $nut) {
        if (isset($boltCounts[$nut])) {
            $matches++;
            unset($boltCounts[$nut]); // 匹配后从记录中移除,避免重复计数
        }
    }

    return $matches;
}

// 示例
$nuts = [1, 2, 3, 4, 5];
$bolts = [2, 4, 5, 6, 7];
echo matchNutsAndBolts($nuts, $bolts); // 输出: 3

Python 示例代码

def match_nuts_and_bolts(nuts, bolts):
    bolt_set = set(bolts)
    matches = 0

    for nut in nuts:
        if nut in bolt_set:
            matches += 1
            bolt_set.remove(nut)  # 移除已匹配的螺栓,避免重复计数

    return matches

# 示例
nuts = [1, 2, 3, 4, 5]
bolts = [2, 4, 5, 6, 7]
print(match_nuts_and_bolts(nuts, bolts))  # 输出: 3

JavaScript 示例代码

function matchNutsAndBolts(nuts, bolts) {
    let boltSet = new Set(bolts);
    let matches = 0;

    for (let nut of nuts) {
        if (boltSet.has(nut)) {
            matches++;
            boltSet.delete(nut); // 移除已匹配的螺栓
        }
    }

    return matches;
}

// 示例
const nuts = [1, 2, 3, 4, 5];
const bolts = [2, 4, 5, 6, 7];
console.log(matchNutsAndBolts(nuts, bolts)); // 输出: 3

码小课网站中有更多相关内容分享给大家学习,涵盖了各种算法和数据结构的深入解析,帮助大家提升编程技能。

推荐面试题