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

判断三个数为连续顺子的无数组无循环算术公式实现方法

三数字连续顺子的无数组无循环算术实现方案

完全可以通过纯算术逻辑实现校验,不需要创建数组、排序或者编写循环,核心利用三个连续整数的数学特征即可,同时兼容现有逻辑里1、12、13的特殊牌型规则。

核心逻辑依据

  • 对任意三个互不相等的整数,如果最大值和最小值的差值为2,三个数必然是连续序列:取值跨度仅为2且无重复的前提下,三个数会刚好填满最小值到最大值之间的所有整数位。
  • 三个连续整数的总和固定为3*最小值 + 3,这个条件可以直接过滤掉「max-min=2但存在重复数字」的异常情况,比如2、2、4,虽然max-min=2,但总和不符合连续数要求,不会被误判。
  • 特殊牌型1、12、13(A、Q、K顺子)不需要枚举所有排列判断,只要校验三个数的最小值为1、最大值为13、中间值为12即可。
  • 三个数的中间值不需要排序计算,直接通过总和 - 最大值 - 最小值就能算出。

最终实现代码

bool isAllInRow(int num1, int num2,int num3)
{
    int min_val = min(num1, min(num2, num3));
    int max_val = max(num1, max(num2, num3));
    int sum_val = num1 + num2 + num3;
    int mid_val = sum_val - min_val - max_val;

    // 特殊牌型判定:1、12、13为顺子
    if (min_val == 1 && max_val == 13 && mid_val == 12) {
        return true;
    }

    // 普通连续顺子判定
    return (max_val - min_val == 2) && (sum_val == 3 * min_val + 3);
}

代码里用到的min/max都是双参数数值比较函数,不需要依赖数组、排序逻辑,就算语言没有内置实现,手写三行内就能完成,完全符合避免数组和for循环的要求。

效果验证

  • 输入4、6、5:min=4,max=6,差值为2,总和15=3*4+3,返回true
  • 输入23、24、22:min=22,max=24,差值为2,总和69=3*22+3,返回true
  • 输入1、12、13:命中特殊牌型规则,返回true
  • 输入3、3、5:max-min=2,但总和11≠3*3+3=12,返回false
  • 输入2、5、6:max-min=4≠2,返回false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:36:22