You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算两个有序整数数组按位置比对的匹配率

有序整数数组位置匹配率计算方案

规则梳理

先明确给定的约束与匹配逻辑:

  • 输入为两个元素取值范围0-9的有序整数数组,匹配时严格按位置一一对应比对:数组1第i位元素仅和数组2第i位元素做相等判断
  • 结合给出的所有示例,可反推出匹配率计算公式,100%覆盖样例结果:

匹配率 = 50%基础分 +(位置值相等的元素个数 / 参与比对的总元素数)* 50%

样例校验结果:

  • [9] 对比 [9]:匹配数1,总长度1 → 50% + (1/1)*50% = 100%,符合预期
  • [9] 对比 [4]:匹配数0,总长度1 → 50% + (0/1)*50% = 50%,符合预期
  • [4, 3] 对比 [4,3]:匹配数2,总长度2 → 50% + (2/2)*50% = 100%,符合预期
  • 前置处理注意:如果两个数组长度不一致,可根据业务需求选择两种处理方式:直接抛出参数异常、按较短数组的长度截断后比对。

Ruby 实现代码

def calculate_match_rate(arr1, arr2)
  # 取两个数组的较短长度作为比对长度,若需要长度强校验,可替换为下方注释的抛错逻辑
  # raise "输入数组长度必须一致" if arr1.length != arr2.length
  compare_length = [arr1.length, arr2.length].min
  return 0.0 if compare_length.zero? # 处理空数组输入场景

  match_count = 0
  compare_length.times do |idx|
    match_count += 1 if arr1[idx] == arr2[idx]
  end

  # 返回0-1之间的小数结果,需要百分比格式直接乘100即可
  0.5 + (match_count.to_f / compare_length) * 0.5
end

# 验证示例
calculate_match_rate([9], [9])     # => 1.0 即100%
calculate_match_rate([9], [4])     # => 0.5 即50%
calculate_match_rate([4,3], [4,3]) # => 1.0 即100%

逻辑调整说明

如果实际业务规则不存在50%基础分(即完全无位置匹配时匹配率为0%),仅需把计算逻辑替换为「匹配率 = 位置值相等的元素个数 / 参与比对的总元素数」即可,对应修改代码中的计算行:

match_count.to_f / compare_length

内容的提问来源于stack exchange,提问作者Andre Zimpel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:21:08