js解决粉刷墙壁的问题



求解,这个问题通过js如何解答,下面是我写的代码,但是通过率只有21.67%,实在是不知道问题出在哪里,也不知道是哪些案例没有通过,希望大神解答,或者是提供下没有通过的案例,拜谢。。。
(function(line=readline()){
    var lines = line.split(" ");
    let lineNum = Number(lines[0]),
        str = String(lines[1]);
    // 如果n > 10W || n < 1 || n != str.length,则不执行后面的代码
    if(lineNum > 100000 || lineNum < 1 || lineNum != str.length) return;
    if(lineNum % 2 == 0){
        //如果n为2的倍数,则判断(左侧刷为蓝色+右侧刷为红色)与 全部刷为红色或蓝色 的最少次数
        console.log(Math.min(getObj(str), getObj(str.substring(0,lineNum/2),"red") + getObj(str.substring(lineNum/2),"blue")));
    }else{
        //如果n不是2的倍数,则判断全部刷为红色或者蓝色的最少粉刷次数
        console.log(getObj(str));
    }
}())

// str表示要粉刷的格子,color表示要粉刷成什么颜色
function getObj(str, color){
    // 定义一个变量,存储粉刷红色或者蓝色的次数
    let obj = {"blue":0,"red":0};
    //获取当前字符串中红色格子和蓝色格子的数量
    str.split("").forEach(el=>{
        if(el === "1"){
            obj["blue"]++;
        }else{
            obj["red"]++;
        }
    })
    if(!color){
        // 如果不区分粉刷成哪种颜色,则取当前那种颜色的格子数量少
        return Math.min(obj["blue"], obj["red"]);
    }else{
        // 返回需要粉刷颜色的格子数量
        return Number(obj[color]);
    }
}

#笔试题目#
全部评论
看这个帖子有题解 https://www.nowcoder.com/discuss/617794?type=all&order=time&pos=&page=1&channel=-1&source_id=search_all_nctrack
点赞 回复 分享
发布于 2021-03-20 00:07
额 去掉左边的1和右边的0(因为没有意义) 然后返回剩下部分的最小0或1的个数
点赞 回复 分享
发布于 2021-03-18 21:47
如果能提供下没有通过的案例,我自己去研究也可以,再次拜谢。。。
点赞 回复 分享
发布于 2021-03-18 21:17

相关推荐

06-13 17:33
门头沟学院 Java
顺序不记了,大致顺序是这样的,有的相同知识点写分开了1.基本数据类型2.基本数据类型和包装类型的区别3.==和equals区别4.ArrayList与LinkedList区别5.hashmap底层原理,put操作时会发生什么6.说出几种树型数据结构7.B树和B+树区别8.jvm加载类机制9.线程池核心参数10.创建线程池的几种方式11.callable与runnable区别12.线程池怎么回收线程13.redis三剑客14.布隆过滤器原理,不要背八股,说说真正使用时遇到了问题没有(我说没有,不知道该怎么回答了)15.堆的内存结构16.自己在写项目时有没有遇见过oom,如何处理,不要背八股,根据真实经验,我说不会17.redis死锁怎么办,watchdog机制如何发现是否锁过期18.如何避免redis红锁19.一个表性别与年龄如何加索引20.自己的项目的QPS怎么测的,有没有真正遇到大数量表21.说一说泛型22.springboot自动装配原理23.springmvc与springboot区别24.aop使用过嘛?动态代理与静态代理区别25.spring循环依赖怎么解决26.你说用过es,es如何分片,怎么存的数据,1000万条数据怎么写入库中27.你说用limit,那么在数据量大之后,如何优化28.rabbitmq如何批次发送,批量读取,答了延迟队列和线程池,都不对29.计网知不知道smtp协议,不知道写了对不对,完全听懵了30.springcloud知道嘛?只是了解反问1.做什么的?短信服务,信息量能到千万级2.对我的建议,基础不错,但是不要只背八股,多去实际开发中理解。面试官人不错,虽然没露脸,但是中间会引导我回答问题,不会的也只是说对我要求没那么高。面完问我在济宁生活有没有困难,最快什么时候到,让人事给我聊薪资了。下午人事打电话,问我27届的会不会跑路,还在想办法如何使我不跑路,不想扣我薪资等。之后我再联系吧,还挺想去的😭,我真不跑路哥😢附一张河科大幽默大专图,科大就是大专罢了
查看30道真题和解析
点赞 评论 收藏
分享
怎么起名字:早知道就不读书了,害得我送外卖还得扶眼镜
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

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