当前位置: 面试刷题>> 螺母(Nuts)和螺栓(Bolts)的问题 (经典算法题500道)
### 题目描述补充
**题目:螺母(Nuts)和螺栓(Bolts)的匹配问题**
给定两个数组,一个代表螺母(`nuts`)的数组,另一个代表螺栓(`bolts`)的数组。每个螺母和螺栓都有一个对应的尺寸(整数表示)。我们需要找出能够完全匹配(即尺寸相同)的螺母和螺栓的对数。注意,一个螺母只能与一个螺栓匹配,反之亦然。
**示例输入**:
- 螺母数组:`[1, 2, 3, 4, 5]`
- 螺栓数组:`[2, 4, 5, 6, 7]`
**示例输出**:
- 匹配的对数:3(因为尺寸为2、4、5的螺母和螺栓各有一对可以匹配)
### PHP 示例代码
```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 示例代码
```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 示例代码
```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
```
**码小课网站中有更多相关内容分享给大家学习**,涵盖了各种算法和数据结构的深入解析,帮助大家提升编程技能。