随笔 - 65  文章 - 0 评论 - 585 trackbacks - 3

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));

  

posted on 2017-12-28 13:10 nicye 阅读(...) 评论(...) 编辑 收藏