专栏首页Node.js开发一道关于组合的js算法题目

一道关于组合的js算法题目

题图 From 花瓣网 By Clm

前不久在网上看到这样一道面试题目,题面是这样的:

有一个数组,如果有3个值:[3,2,6]。交叉组合后返回:3-2,3-6,2-6,3-2-6

如果这个数组有4个值:[3,2,6,9]。交叉组合后返回:3-2,3-6,3-9,2-6,2-9,6-9,3-2-6,3-2-9,2-6-9,3-2-6-9。

如果是5个值,6个值以此类推,结果如何,如何用JavaScript实现这个功能呢?

原题目要求是用java来实现,这里我给换成了javascript,语言其实无关紧要,就像leetcode的题目,主要是看思维方式。

代码如下:

大体的思路是:

1、大循环套小循环,大循环根据数组的程度进行循环,每循环一次,将数组的第一项剔除。

2、小循环中定义了一个局部变量index,这里的思路是,每次循环将数组分为固定前缀和剩余变化值,然后将剩余变化值和前缀进行拼接,塞入result中。

代码流程图如下:

其实这个题目还有很多变式,比如将需求改为,从数组中随机选择两个值能有多少种组合,随机选择三个呢?

大家可以思考一下,这些小的思考对编程思维的形成很有帮助,笔者也是很乐于写写这方面的文章,大家有什么好的题目可以分享出来,欢迎大家留言。

本文分享自微信公众号 - nodejs全栈开发(geekclass),作者:陈老湿

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 算法题之优势洗牌

    给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。

    挥刀北上
  • 算法题之数组连续筛选处理

    大体思路就是循环遍历,每次遍历判断当前项是否与前一项差值为1,这里需要考虑若结果为1,如何处理,结果不为1如何处理。

    挥刀北上
  • 如何取消ajax请求的回调

    我们在开发过程中有时候会碰到这样的需求,连续发送多个ajax请求,请求个数大于等于2,后面的ajax请求发送时,如果前面的ajax请求还没有返回,就取消前面aj...

    挥刀北上
  • python循环语句详细讲解

    想必大家都知道python循环语句吧,可以python循环语句有多种,比如for循环、while循环、if、else等等,

    QQ1622479435
  • 这五道数组相关的面试题,你一定要会!

    在算法面试中,数组是必考的基础数据结构 其实数据的题目在思想上一般比较简单的,一想就是这么一回事

    代码随想录
  • 典型关联分析 CCA

    典型关联分析(Canonical Correlation Analysis,CCA)是常用的挖掘数据关联关系的方法之一。在展开之前,我们首先回忆一下数理统计中相...

    yangzelong
  • 五个python常用运维脚本面试题实例

    一、用Python写一个列举当前目录以及所有子目录下的文件,并打印出绝对路径 #!/usr/bin/env python import os for root,...

    小小科
  • python练习题(一)

    原型为:os.walk(top, topdown=True, onerror=None, followlinks=False)

    py3study
  • Python(2)

        c、list.extend(seq):在列表末尾一次性追加另一个序列中的多个值

    py3study
  • 简单理解伽马校正

    早期的 CRT 显示器存在非线性输出的问题,简单来说,你给 CRT 显示器输入(input)一个 0.5(**注意,输入范围为[0,1]), CRT 显示器的输...

    用户2615200

扫码关注云+社区

领取腾讯云代金券