360笔试题,两数相加

题目ui

给出两个在m静之下含有N位的数字,你能够分别将这两个数各位上的数字从新排列,而后将两个数按位对应相加,并分别对m取模,这样显然能够获得一个新的m进制之下的N位数(可能存在前导0),可是这个结果是不惟一的,问题来了,按照这样的操做可以获得的最大的m进制下的数字是多少呢?spa

输入第一行包含两个正数n,m,分别表示数字含有n位,和在m进制下code

输入第二行和第三行分别包含n个整数,中间用空格隔开,每一个整数都在零到m-1之间,每行第i个数表示的是当前数第i位上的数字排序

输出包含n个数字中间用空格隔开,表示获得的最大的数字,从高位到低位输出,如6在二进制下输出三位的结果是1 1 0string

输入
    5 5
    4 4 1 1 1
    4 3 0 1 2
    输出4 4 3 3 2

    提示
    4 4 1 1 1――1 4 1 4 1
    4 3 0 1 2――3 0 2 4 1
    重排序列不惟一,数位相加后的数字为4 4 3 8 2,对5取模便可
复制代码

解决方案io

const add = (num1,num2,m)=>{
      let res = [];
      let tempArr = [];
      let tempj = 0;
      for(let i=0;i<num1.length;i++) {
        for(let j=0;j<num2.length;j++){
          let temp = num1[i]+num2[j];
          if(temp>=m) {
            temp=temp-m;
          }
          if(!tempArr.length) {
            tempArr.push(temp)
          }else{
            if(tempArr[0]<temp){
              tempj = j;
              tempArr[0]=temp;
            }
          }
        }
        num2.splice(tempj,1);
        res.push(tempArr[0])
        tempArr.length = 0
        tempj=0
      }
      return +res.sort((a,b)=>b-a).join('')
    }
    
    console.log(add([4,4,1,1,1],[4,3,0,1,2],5))
复制代码
相关文章
相关标签/搜索