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

Golang:如何判断吉他和弦数组中哑音值-1是否出现在中间位置

吉他和弦指法数组哑音合法性判断实现

核心判断规则

所有值为-1的哑音元素只能出现在数组的最开头连续段、或者最末尾连续段,只要中间非哑音区间出现-1(即-1被两个非-1元素夹在中间),就判定为非法。

实现思路

  • 定位数组第一个非-1元素的下标left,left左侧全是开头连续的哑音
  • 定位数组最后一个非-1元素的下标right,right右侧全是末尾连续的哑音
  • 检查left到right之间的所有元素:如果存在任何一个-1,说明哑音出现在中间非哑音区域,判定为非法;否则判定为合法

完整Go代码实现

func isValidChord(c []int) bool {
    n := len(c)
    // 空数组可根据业务需求调整返回值,这里默认返回合法
    if n == 0 {
        return true
    }

    // 查找第一个非-1的元素位置
    left := 0
    for left < n && c[left] == -1 {
        left++
    }
    // 数组全为-1,属于合法情况
    if left == n {
        return true
    }

    // 查找最后一个非-1的元素位置
    right := n - 1
    for right >= 0 && c[right] == -1 {
        right--
    }

    // 检查中间非哑音区间是否存在-1
    for i := left; i <= right; i++ {
        if c[i] == -1 {
            return false
        }
    }
    return true
}

调用方式

你可以直接在原有遍历逻辑中调用该函数过滤不符合要求的和弦:

// 假设c是当前遍历到的和弦数组
if !isValidChord(c) {
    // 不符合要求,跳过该和弦
    continue
}
// 符合要求,执行后续处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:36:03