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

Java/Android中判断数组是否符合指定顺序的实现方法

判断数组是否完全匹配指定顺序的解决方案

嘿,很高兴你已经摸到了解决问题的门道!针对你提出的需求——判断cells数组是否完全精确匹配{1,2,3,...,15,0}这个特定顺序,我来帮你把逻辑优化得更清晰高效~

核心思路

我们的目标很明确:只要数组中有任意一个元素的位置和目标顺序不符,就返回false;只有当所有元素的位置都完全对应时,才返回true。

优化后的代码实现

相比你用计数器的思路,我们可以简化逻辑,直接逐一对比每个索引的元素,一旦发现不匹配就立刻终止判断,这样效率更高,代码也更易读:

public boolean matchesTargetOrder(int[] cells) {
    // 定义目标顺序的数组
    int[] targetSequence = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0};
    
    // 先校验数组长度,避免输入数组长度不符的情况
    if (cells.length != targetSequence.length) {
        return false;
    }
    
    // 遍历每个索引,逐一对比元素
    for (int i = 0; i < cells.length; i++) {
        if (cells[i] != targetSequence[i]) {
            // 只要有一个元素不匹配,直接返回false
            return false;
        }
    }
    
    // 所有元素都匹配,返回true
    return true;
}

对原思路的补充说明

你原来用计数器统计正确元素数量的思路是可行的,但代码里有两处可以优化的地方:

  1. 不需要在循环内部判断correct == cells.length——只有当所有元素都匹配时,这个条件才会成立,而此时循环已经遍历到最后一个元素,循环结束后再判断即可。
  2. 一旦发现元素不匹配就直接返回false,不需要继续统计,这样能提前终止循环,提升效率。

比如修正后的计数器版本可以是这样:

public boolean matchesTargetOrder(int[] cells) {
    int[] targetSequence = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0};
    if (cells.length != targetSequence.length) {
        return false;
    }
    
    int correctCount = 0;
    for (int i = 0; i < cells.length; i++) {
        if (cells[i] == targetSequence[i]) {
            correctCount++;
        } else {
            // 不匹配直接返回,不用继续统计
            return false;
        }
    }
    // 遍历完成后,正确数量等于数组长度则返回true
    return correctCount == cells.length;
}

两种方式都能实现需求,不过第一种直接对比的方式更简洁高效哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:18:04