记录金山笔试

第一题:一个任意长度字母字符串,当两个及以上辅音连在一起是无效的,可以随意修改字母位置,问可得到的有效字符串的长度最长是多少?


第二题:nums数组中是每个球员的能力值
m球员个数,比赛前两个教练会把队员分为两队(人数不要求一样,每个教练都会选择剩余球员能力最大的那个,并把他左右两边的n个队员带走,当左右人数不够n个时,就把剩余的带走,
例:m=7,n=2,nums=【1,6,7,9,2,5,3】
结果,BAAAAAB

例m=5,n=1,nums=[2,4,5,1,3]
结果:BAAAB
hanshu(nums,m,n)
function hanshu(nums,m,n){
    var panduan=false
    var nums1=JSON.stringify(nums)
    var numCopy=JSON.parse(nums1)
    var shuzu=new Array(m).fill(0)
    // // 数组,人数,个数
    while(nums.length>0){
        panduan=!panduan
        var max=getMax(nums)
        var left=(max-n)>0?max-n:0
        var right=(max+n)<nums.length-1?max+n:nums.length-1
        var length=right-left+1
        let nums2=nums.splice(left,length)
        if(panduan){
            // 添加A
            shuzu=getResult(numCopy,nums2,"A",shuzu)
            
        }else{
            shuzu=getResult(numCopy,nums2,"B",shuzu)
        }
    }
    console.log(shuzu.join(''))
}
function getResult(numCopy,nums2,panduan,shuzu){
    var i=0
    numCopy.forEach((item,index)=>{
        if(item==nums2[i]){
            i++
            shuzu[index]=panduan
        }
    })
    return shuzu
}
function getMax(nums){
    var max=nums[0]
    var result=0
    nums.forEach((item,index)=>{
        max=Math.max(item,max)
        if(max==item){
            result=index
        }
    })
    return result
}


第三题,没有印象了

全部评论

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
10-27 17:26
东北大学 Java
点赞 评论 收藏
分享
2 8 评论
分享
牛客网
牛客企业服务