数组排列拼接使最后结果最大,返回值要求string类型
var largestNum = function(nums) { return nums.sort((a,b) => `${b}${a}` - `${a}${b}` ).join('').replace(/^0+/,'0') };第二题:给定两个32位整数,不使用算术运算符,实现a和b的加减乘除,如果给定的a和b执行加减乘除的某些结果本来就会导致数据的溢出,你实现的函数不需要对那些结果负责
(输出结果与加减乘除溢出结果一致就行)
function calc( a , op , b ) { var result = 0 var cheng = function(a,b){ var res = 0; while(b != 0){ if((b&1) != 0){ res = add(res,a) } a <<= 1 b >>>= 1 } return res } var add = function(a,b){ var r = a; while(b){ r = a ^ b b = (a & b) << 1 a = r } return r } var jian = function(a,b){ b = add(~b,1) return add(a,b) } var chu = function(a,b){ var x = a < 0 ? add(~a,1):a var y = b < 0 ? add(~b,1):b var res = 0 for(let i = 31 ; i > -1; i = jian(i,1)){ if((x >> i) >= y){ res |= (1 << i) x = jian(x,y << i) } } return (a < 0)^(b < 0) ? add(~res,1):res } if(op == '*'){ result = cheng(a,b) }else if(op == '+'){ result = add(a,b) }else if(op == '-'){ result = jian(a,b) }else { result = chu(a,b) } return result; }测试可用,两道题均已通过
全部评论
(1) 回帖