给定数组,试求能否从数组中取出n个不复用的数的和为sum
来源:互联网 发布:阿里云 视频cdn加速 编辑:程序博客网 时间:2024/05/22 04:40
这是之前在一次面试中遇到的一道题,当时因为太久没撸算法,太久没刷题,所以gg,现在回顾一下。
问题描述:
实现一个函数,传3个参数,指定数组(有小数、正负数),n(取出个数),sum(指定和),输出是否能找到这几个数。
这和经典的凑硬币问题其实本质上是相同的,自然可以用动态规划来做,但这里我们先考虑用深度搜索来做做。
关键就是这些边界的选择设置,我在这里也调了很久,这还是得多练,熟能生巧
边界条件:
- sum=0&n=0,成功get;
- n<=0,这条路径跪了;
- n>0,继续搜索->>>
因为数组中有正有负,所以sum只能用于最后的满足判断
处理关键是各种情况都需要有确定的逐层return,因此只要你的考虑周全,边界判断可以灵活改变。
完整代码如下:成功返回true,失败返回false
function findGroup(arr,n,sum){ if(sum == 0 && n == 0){ return true; }else if(n <= 0){ return false; } if(n > 0) for(var i = 0; i < arr.length; i++){ var temp = arr.slice(i+1,arr.length); return findGroup(temp,n-1,sum-arr[i]) || findGroup(temp,n,sum); }}
未完…(看算法真是又爽又痛苦,关键是理解)
阅读全文
0 0
- 给定数组,试求能否从数组中取出n个不复用的数的和为sum
- 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数
- 在给定数组中查找两个数的和为给定值sum
- 从数组中取出n个元素的组合
- 给定一个包含从0,1,2,...,n中取出的n个不同数字的数组,找到数组中缺少的数字。
- N个数组,从每个数组中取出一个数,组成一个序列,输出所有可能的情况
- 一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum
- 一个N个整数的无序数组,给你一个数sum,求出数组中是否存在两个数,使他们的和为sum
- 排序数组中查找和为给定值的两个数O(n)
- 1. Two Sum 给定一个数组和一个数,输出两个和为给定数的数组元素的下标
- 167 Two Sum II (给定数组求相加为定值的两个数)
- 从长度为M的无序数组中找出N个最大的数
- [LeetCode]—3Sum Closest 求数组中三个数之和最接近给定target的组合
- 无序数组中找出和为N的两个数 Two Sum
- 算法导论9.3-8-设X[1..n]和Y[1..n]为两个数组,每个都包含n个已排好序的数,给出一个求数组X和数组Y中所有2n个元素的中位数
- 算法.给定数为数组中2个元素的之和,求出数组的下标
- iOS N个数组,从每个数组中取出一个元素,组合,成为一个新的数组的集合
- 给定一个整数sum, 从有N个有序元素的数组中寻找元素a,b,使得a+b的结果最接近sum
- Android常用的几个adb命令
- POJ1185 炮兵阵地
- StringBuffer与StringBuilder的区别
- C++访问控制
- linux 下socket编程
- 给定数组,试求能否从数组中取出n个不复用的数的和为sum
- web前端面试题(查找字符串中出现最多的字符)
- Git常用命令
- libevent的了解
- JQuery.Ajax()的data参数类型
- MySQL 5.7 (4sysbench安装和性能测试)
- spring 依赖注入 困惑小记
- 交易分析计划和最终落实执行
- MySQL 5.7 (5 tpcc-mysql 安装、 测试)