You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何快速筛选排序数位递增且数位和为5的列表数字?

嘿,我来帮你搞定这个性能优化的问题!针对你提到的两个核心需求——筛选出数位严格递增且数位和等于5的数字,再高效完成排序,我整理了一套比现有方案快得多的实现思路,不管是生成所有符合条件的数字,还是从给定列表里筛选,都能把性能拉满。

一、最优思路:优先构造而非遍历筛选

先给你说个核心结论:如果你的场景是要找出所有符合条件的数字,那直接构造符合要求的数字,比遍历一堆无关数字再筛选要高效10倍以上——毕竟符合“数位严格递增+数位和=5”的数字本身就很少,从源头减少处理量才是王道。

构造逻辑拆解

数位严格递增的数字,本质是从1-9里选不同的数字(不能重复且按从小到大排列,自然满足递增),同时这些数字的和刚好是5。咱们来枚举所有可能:

  • 单个数字:只有5(和为5,天然满足递增)
  • 两个数字:1+4=5 → 14;2+3=5 →23
  • 三个及以上数字:最小的三个不同递增数字是1+2+3=6,已经超过5了,所以不存在

直接生成这些数字的代码(拿Python举例):

def generate_valid_numbers():
    valid = []
    # 单个数字
    valid.append(5)
    # 两个数字的组合:保证i < j,且i+j=5
    for i in range(1, 3):  # i最大是2,因为2+3=5,i=3的话j=2就小于i了
        j = 5 - i
        valid.append(int(f"{i}{j}"))
    # 生成的列表天然有序,连排序都省了!
    return valid

运行后直接得到[5,14,23],完全符合要求,而且根本不需要排序步骤——这比你先遍历再筛选再排序的方案效率高太多。

二、如果是从给定列表里筛选+排序

要是你的场景是有一个现成的数字列表,需要从中挑出符合条件的再排序,那咱们就优化筛选逻辑+用最优排序算法:

优化筛选:一次遍历完成两个条件判断

别分开计算数位和、判断数位递增,把两个逻辑合并到一次数位遍历里,减少重复计算,还能提前终止不符合条件的判断:

def filter_and_sort(numbers):
    valid_nums = []
    for num in numbers:
        temp = num
        digit_sum = 0
        prev_digit = -1
        is_increasing = True
        
        while temp > 0:
            digit = temp % 10
            digit_sum += digit
            
            # 一旦发现数位不递增,直接标记并跳出循环,不用继续算
            if digit <= prev_digit:
                is_increasing = False
                break
            
            prev_digit = digit
            temp = temp // 10
        
        # 两个条件都满足才加入结果列表
        if is_increasing and digit_sum == 5:
            valid_nums.append(num)
    
    # 用Python内置的sort就行——这是经过工业级优化的Timsort,比你自己写的快速排序快多了
    valid_nums.sort()
    return valid_nums

这个版本里,每个数字只需要被遍历一次数位,中途发现不符合递增就直接停止计算,大大节省了时间。

为什么这个方案更快?

  1. 减少重复遍历:把数位和计算与递增判断合并,避免对同一个数字多次拆解数位
  2. 提前终止:一旦发现数位不递增,立刻停止后续计算,跳过无效判断
  3. 用最优排序:别自己实现快速排序了,Python内置的sort()是目前业界最高效的排序算法之一,处理各种数据量都比手动实现的快

三、总结

  • 如果是找所有符合条件的数字:直接构造,天然有序,一步到位
  • 如果是从给定列表筛选:合并判断逻辑+用内置排序,性能拉满

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

火山引擎 最新活动