美文网首页
基础算法之"递归类"

基础算法之"递归类"

作者: 陈裔松的技术博客 | 来源:发表于2019-04-25 13:00 被阅读0次

题目:30. 串联所有单词的子串

思路:关键在于找到子串的所有组合
方法:先找到第一个位置可能存放的子串,然后用递归的方式继续存放到后面

function findSubstring(str, words) {
    // 存放结果
    let result = [];
    // 记录数组的长度,做边界条件计算
    let num = words.length;

    // 定义递归函数体
    let range = (r, _arr) => {
        if (r.length === num) {
            result.push(r);
        } else {
            _arr.forEach((item, index) => {
                let tmp = [..._arr];
                tmp.splice(index, 1);
                range([...r, item], tmp);
            })
        }
    }
    // 执行递归处理
    range([], words);

    return result.map(item => {
        return str.indexOf(item.join(''))
    }).filter(item => item !== -1).sort();
}

相关文章

  • 基础算法之"递归类"

    题目:30. 串联所有单词的子串 思路:关键在于找到子串的所有组合方法:先找到第一个位置可能存放的子串,然后用递归...

  • jvm系列之垃圾收集算法

    jvm系列之垃圾收集算法 1 标记-清除算法 标记-清除算法是最基础的算法,算法分为标记和清除两个阶段,首先标记出...

  • SkeletonView 骨架屏源码解析

    SkeletonView pod "SkeletonView" 库中常用的算法 recursiveSearch 递...

  • 算法基础之经典算法

    本文包括js学习中简单功能的算法包括对js以及DOM和BOM的研究过程中一些有意思的代码实现本文还包括公司面试相关...

  • 基础算法之冒泡算法

    题记: 在某著名公司电面的时候,问过冒泡算法,当时大脑空白,竟忘记冒泡中心思想是什么,甚至忘记冒泡算法是什么东东,...

  • 算法基础之排序算法

    1.冒泡排序 特点:比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。 2.插入排序 特点:从第二位数开...

  • 逻辑回归(鸢尾花案例)

    一、什么是逻辑回归? 逻辑回归是机器学习中的一个基础的算法,他与线性回归类似,与线性回归不同的是它预测的分类问题。...

  • 程序员算法基础——贪心算法

    程序员算法基础——贪心算法 程序员算法基础——贪心算法

  • 【机器学习实践】kmeans算法实践

    kmeans算法 kmeans算法是一种聚类算法,用于无标签数据的自行归类。讲kmeans的原理有很多,个人参考的...

  • EM算法及其相关算法学习

    EM算法是数据挖掘领域十大经典算法之,是一种基础的算法,用到非常用的有名的算法里面比如隐藏马尔科夫算法(HMM)、...

网友评论

      本文标题:基础算法之"递归类"

      本文链接:https://www.haomeiwen.com/subject/avgagqtx.html