/**     * 实现一个`Foo`方法,接受函数`func`和时间`wait`      * 返回一个新函数,新函数即时连续多次执行,但也只限制在`wait`的时间执行一次      */   function Foo(func, wait) {    let time;    let args = arguments      return function(args) {        if(time) {  //如果time已经设置了,就return            return;        }        time = setTimeout(()=>{            clearTimeout(time) //清除定时器        },wait)  //每wait时间内执行一次    }}      /**      * 判断括号匹配      * 说明:给定一个只包含 '() {} []' 6种字符的字符串,      *   实现一个方法来检测该字符串是否合法,其规则为'()'、'{}'、'[]'必须互相匹配,可嵌套。      * 示例:      *   isValid('(');          // false      *   isValid('()');         // true      *   isValid('()[]{}');     // true      *   isValid('{()[]}');     // true      *   isValid('(]');         // false      *   isValid('([)]');       // false      *   isValid('({}[]([]))'); // true      */   function isValid(s){    let stack = []    for(let i=0;i < s.length;i++){        let temp = s[i];        if(temp == '{' || temp == '(' || temp == '[') {//如果遇到左括号,就入栈            stack.push(temp);        }else {            if(stack.length == 0) {//栈空,说明没有可以匹配的元素                return false;            }            let tp = stack[stack.length - 1];            if(tp == '(' && temp == ')' || tp == '[' && temp == ']'            || tp == '{' && temp == '}'){ //括号匹配上了,就出栈                stack.pop();            }else {                return false;  //如果没匹配,提前返回false            }        }    }    return stack.length == 0; //如果最后栈为空了,说明元素全部匹配完了}      /**      * 找出数组中第k大和第m大的数字相加之和      * 说明:实现一个方法,找出数组中第k大的和第m大的数字相加之和      * 示例:      *   let arr = [1,2,4,4,3,5], k = 2, m = 4      *   findTopSum(arr, k, m); // 第2大的数是4,出现2次,第4大的是2,出现1次,所以结果为10      */   function findTopSum(arr, k, m) {        let newarr = arr.slice(0);        let set = new Set(newarr);        let tparr = Array.from(set);        tparr.sort((a,b)=>(a-b)); //排序,从小到大,方便找到第几大的数字        //arr.sort((a,b)=>(a-b)); //数组也排序        let len = tparr.length;        let kMax = tparr[len-k]; //找出第k大的数        let mMax = tparr[len-m]; //找出第m大的数        // console.log(kMax,mMax)        let sum = 0; //总和初始化为0        for(let i=0;i < arr.length;i++){            if(arr[i] == kMax || arr[i] == mMax){                sum += arr[i];            }        }        return sum;    }      /**      * 对象扁平化      * 说明:请实现 flatten(input) 函数,input 为一个 javascript 对象(Object 或者 Array),返回值为扁平化后的结果。      * 示例:      *   var input = {      *     a: 1,      *     b: [ 1, 2, { c: true }, [ 3 ] ],      *     d: { e: 2, f: 3 },      *     g: null,       *   }      *   var output = flatten(input);      *   output如下      *   {      *     "a": 1,      *     "b[0]": 1,      *     "b[1]": 2,      *     "b[2].c": true,      *     "b[3][0]": 3,      *     "d.e": 2,      *     "d.f": 3,      *     // "g": null,  值为null或者undefined,丢弃      *  }      */     没做出     function flatten(input) {           }  
点赞 1
评论 0
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务