算法(TS):找出数组中和为sum的n个数

使用递归和回溯

ts 复制代码
function findSum(arr: number[],target:number,count:number):number[][] {
    if(arr.length === 0 || count <= 0) return []
    const answers: number[][] = []
    const current: number[] = []

    const backtrack = (start: number,sum: number,n: number) => {
        if(sum === 0 && n === 0) {
            answers.push([...current])
            return
        }

        for(let i = start; i < arr.length; i++) {
            if(arr[i] <= sum) {
                current.push(arr[i])
                backtrack(i + 1,sum-arr[i],n-1)
                current.pop()
            }
        }
    }

    backtrack(0,target,count)
    return answers

}
相关推荐
meilindehuzi_a几秒前
撕开 JS 的 Class 面具:从构造函数的 new 降生到顶层原型链的终极通关
开发语言·javascript·ecmascript
通信小呆呆4 分钟前
从理想到现实:实际系统中非理想特性及其补偿方法
算法·数学建模·信号处理
AI人工智能+电脑小能手8 分钟前
【大白话说Java面试题 第97题】【Mysql篇】第27题:说说分库与分表的设计?
java·开发语言·数据库·分布式·mysql·算法
yuan1999716 分钟前
双目视觉测距实现
算法
洒脱的六边形战士加辣17 分钟前
Java排序方法全解析
java·数据结构·算法
阿坨24 分钟前
JavaScript异步编程:Promise与async/await
javascript
代码中介商28 分钟前
LRU缓存算法:双向链表+哈希表实现
算法·链表·缓存
lqqjuly32 分钟前
计算理论—图灵机、复杂性、信息论与机器学习的理论基础
算法
独特的螺狮粉34 分钟前
蛋鸡养护周期管理系统 - 鸿蒙PC Electron框架完整实现指南
前端·javascript·华为·electron·前端框架·开源·鸿蒙
Hiter_John1 小时前
Golang的循环语句
开发语言·算法·golang