小米前端编程题求指教

1. 三角形(78)
long fun(long x) {
    for (long i = 0; i < x; i++) {
        long el = 1;
        for (long j = 0; j <= i; j++) {
            el = el * (i - j) / (j + 1);
            if (el == x) return i + 1;
        }
    }
}
2. 食堂里的长桌(AC)
bool fun(char* table, int n) {
    int len = sizeof(table);
    int pos = 0;
    for (int i = 0; i < len - 3; i++) {
        if (table[i + 1] == '0' && table[i + 2] == '0' && table[i + 3] == '0') pos++;
    }
    if (pos >= n) return true;
    else return false;
}
3. 能否变成回文串(88)
function fun(str) {
    var len = str.length;
    var hash = {};
    var isPalindrom = false;
    for (var i = 0; i < len; i++) {
        if (!hash[str[i]]) hash[str[i]] = true;
    }
    for (var i in hash) {
        if ((str + i) === (str + i).split('').reverse().join('') ||
            (i + str) === (i + str).split('').reverse().join('')
        ) {
            isPalindrom = true;
        }
    }
    return isPalindrom;
}
杨辉三角不知道漏了哪些 cases,回文串感觉是超时了,求分享一下 AC 的解法 🙏#小米##前端工程师#
全部评论
你第2题A了?我感觉不对啊😂
点赞 回复 分享
发布于 2017-09-18 21:13
第一题ac 很low的版本 function fun(n) {     if(n==1){return 1}     var l = 10000;     var res = [];     var k;     for(var i=1;i<=l;i++) {         k=1;         for(var j=1;j<i;j++) {             res.push(k);             k=k*(i-j)/j;         }         if(res.indexOf(n)!=-1){console.log(i);return}     } };
点赞 回复 分享
发布于 2017-09-18 21:21
第三题,如果字符串减一个字母是回文串,那加一个字母也会是回文串,然后把字符串挨个减掉挨个试就可以了
点赞 回复 分享
发布于 2017-09-18 21:23
第三题,最简单暴力解,连缓存都没用,可以过 const readline = require('readline') const log = console.log.bind(console) const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) rl.on('line', function(line){ const str = line.trim() const result = handle(str) // var output = result ? 1 : 0 log(result) }); const valid = function(checkString) { var s = checkString var len = s.length var odd = len % 2 === 1 var subLen = Math.floor(len / 2) var t1 = s.slice(0, subLen) var t2 = odd ? s.slice(subLen + 1) : s.slice(subLen) t2 = t2.split('').reverse().join('') // log('t', t1, t2) return t1 === t2 } const handle = function(str) { var s = str var arr = s.split('') var set = new Set(arr) set = [...set] var result = 0 for(var k = 0; k < set.length; k++) { var c = set[k] var t = c + s if (valid(t)) { return 1 } } for(var i = 0; i < s.length; i++) { for(var j = 0; j < set.length; j++) { var v = set[j] var temp = s.slice(0, i + 1) + v + s.slice(i + 1) if (valid(temp)) { return 1 } } } return 0 } btw,前端为何不用node(
点赞 回复 分享
发布于 2017-09-18 21:26

相关推荐

点赞 评论 收藏
分享
object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
评论
点赞
14
分享
牛客网
牛客企业服务