算法练习

625 阅读2分钟

一:斐波那契

//斐波那契数列
        function getRabbitNum(num) {
            var result = [];
            function fn(n) {
                if (n <= 2) {
                    result[n] = 1;
                    return 1;
                } else {
                    if (result[n]) {
                        return result[n]
                    } else {
                        result[n] = arguments.callee(n - 1) + arguments.callee(n - 2);
                        return result[n]
                    }
                }
            }
            fn(num);
            return result;
        }
        console.log(getRabbitNum(10))

考虑错误输入

二:实现一个数组方法,输出数组中出现频率大于n的数字

三:一个包含很多url的数组,每次进行固定数量的请求,返回结果后,再进行下一批。

四:快速排序

五:三树之和

六:将给入的对象数组按给定的属性排序, 值是 number 按升序, 是 string 按字母排序

七:实现字符串的反转

八:实现一个for循环内的setTImeout输出

九:写一个get(obj,‘a.b.c')函数,实现能够访问到obj.a.b.c

十:二进制相加,给两字符串求值

十一:23456790 -> 1,234,567,890 每千位加个" , "

十二:求两个链表公共节点

十三:手写loadsh的_.get方法,要求能针对错误输入处理

十四:最长无重复子串

十五:字符串数组从左边变成右边,个数为1不添加,时间复杂度多少,空间复杂度多少

十六:写一个组件,边输入边搜索。注:问到了后端的数据格式不确定,如何实现数据模板(回答不出来

十七:找数组里总和大于等于目标值的连续数字合和

十八:找二叉树从根节点到叶节点所有路径的总连续和

十九:判断一个链表是否有环

二十:写个函数反转字符串

二十一:实现一个简单的 EventEmitter

二十二:二叉树的前中后序遍历,已知前中序,求原有的二叉树

二十三:给一个正整数数组和一个数字n,返回告知该数组是否有连续序列,和为n

二十四:实现一个函数,第i次执行输出i

二十五:类下拉的一个提示框,当聚焦input的时候可以根据方向键使用,上下的时候分别聚焦选中部分

二十六:1001个数 500成对相同 找出落单数 要求O(n)时间 O(1)空间

二十七:用先序遍历将二叉树转化为链表

二十八:数组转一维数组

二十九:实现双十一倒计时

三十:回文字符串

三十一: