• 面试算法题目,求批判


    1. 评分: 0 分 2. 评分: 0 分 3. 评分: 0 分 编程题:请实现一个方法将一亿以内的数字变成汉语数字,比如:将51040转成“伍万壹 仟零肆拾”。 方法原型为:String convertInt2Chinese(int num)。 参考信息:零壹贰叁肆伍陆柒捌玖拾佰仟萬亿(30分)

    function convertInt2Chinese(num) {
        var chineseNum = '零壹贰叁肆伍陆柒捌玖拾';
        var strNum = String(num);
        var ret = '';
        for (var a = strNum.length - 1; a >= 0; a -= 8) { //计算亿
            var ret1 = '';
            for (var a1 = 0; a1 < 8 && a - a1 >= 0; a1++) {
                var tmp1 = ['拾', '佰', '千', '万', '拾', '百', '千'];
                var tmp2 = a1 > 0 && strNum[a - a1] != '0' ? tmp1[a1 - 1] : '';
                ret1 = chineseNum[parseInt(strNum[a - a1], 10)] + tmp2 + ret1;
            }
            while (ret1[0] == '零') ret1 = ret1.substr(1);
            while (ret1[ret1.length - 1] == '零') ret1 = ret1.substr(0, ret1.length - 1);
            if (a - 8 >= 0) ret1 = '亿' + ret1;
            ret = ret1 + ret;
        }
        return ret;
    }
    
    console.log(convertInt2Chinese(5104054230490));
    

    2. 编程题:有两个长度分别为m,n的升序整型数组,其中n>m*m,求这两个数组的交集,要 求时间复杂度尽可能低。 如数组a: -10, 6, 7 数组b: -15, 1, 3, 4, 5, 6, 7, 8, 9, 10, 15 结果应该是: 6, 7(30分)

    var arr1 = [-10, 6, 7];
    var arr2 = [-15, 1, 3, 4, 5, 6, 7, 8, 9, 10, 15];
    var arr3 = [];
    for (var a = 0; a < arr1.length; a++) {
        for (var b = 0; b < arr2.length; b++) {
            if (arr1[a] == arr2[b]) {
                arr3.push(arr1[a]);
                break;
            }
        }
    }
    console.log(JSON.stringify(arr3));
    

    3. 编程题:有一个随机生成的数组,随机范围为(-1000,1000),从数组中截取一个或 连续的多个元素求和,求能截取到的和最大的元素序列,要求时间复杂度为 O(n)。 例如数组为 1, -4, 4, 10, -5, 7, 2, -5,其和最大的元素序列为 4, 10, -5, 7, 2。(40 分)

    var arr1 = [1, -4, 4, 10, -5, 7, 2, -5];
    // for (var a = 0; a < 10; a++) {
    //     var rnd = parseInt(Math.random() * 2001) - 1001;
    //     arr1.push(rnd);
    // }
    var ret = [];
    var retNum = -999999;
    var retAB = [];
    for (var a = 0; a < arr1.length - 1; a++) {
        var num1 = arr1[a] + arr1[a + 1];
        if (num1 > retNum) {
            retNum = num1;
            retAB = [a, a + 1];
        }
        for (var b = a + 2; b < arr1.length; b++) {
            num1 = num1 + arr1[b];
            if (num1 > retNum) {
                retNum = num1;
                retAB = [a, b];
            }
        }
    }
    for (var a = retAB[0]; a <= retAB[1]; a++) {
        ret.push(arr1[a]);
    }
    console.log(JSON.stringify(ret));
    

      

  • 相关阅读:
    _src_求和案例_mapState与mapGetters
    _src_求和案例_mapMutations与mapActions
    _src_求和案例_多组件共享数据
    LLVM基础学习:LLVM的编译安装和基本使用
    LLVM基础学习:使用GDB调试一个outoftree的 LLVM Pass
    2022 618笔记本选购指北
    PHP中SERVER_NAME获取的问题
    一天一个仿lodash函数实现fill、findIndex、first、head
    一天一个仿lodash函数实现flatten
    一天一个仿lodash函数实现keyBy、groupBy、find
  • 原文地址:https://www.cnblogs.com/kellynic/p/8135172.html
Copyright © 2020-2023  润新知