记录自己刷的算法题

169 阅读1分钟
  1. 用 JavaScript 写一个函数,输入 int 型,返回整数逆序后的字符串。如:输入整型 1234,返回字符串“4321”。要求必须使用递归函数调用,不能用全局变量,输入函数必须只有一个参数传入,必须返回字符串。(哔哩哔哩算法题)
function reverse (n) {
    if (typeof n === 'string') {
        console.log('请输入number类型');
        return;
    }
    let s = n % 10; // 4
    let s_string = s + '';
    if ((n / 10) >= 1) {
        s_string = s_string + reverse((n-s) / 10);
    }
    return s_string;
}
  1. 已知如下数组:

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组 (携程算法题)

function flatten (arr) {
    let newArr = [];
    for(let i = 0; i < arr.length; i++) {
        let a = arr[i];
        if (Array.isArray(a)) {
            // 假如是数组
            newArr = flatten(newArr.concat(a));
        } else {
            if (newArr.indexOf(a) > -1) continue;
            newArr.push(a);
        }
    }
    return newArr.sort((b, c) => b - c);
}

或者

// 扁平化 Array.prototype.flat(deep)
// 去重 new Set
// sort 排序
function flatten2 (arr) {
    return Array.from(new Set(arr.flat(Infinity))).sort((a, b) => a - b );
}