第一题:在二维矩阵上有很多个点,需要多少平行于y轴的宽度为W的压路机才能将所有的点全覆盖。输入(X,Y,W)(X,Y)为点的坐标,W是压路机的宽度。
var X = [2,4,2,6,7,1 ];
var Y = [0,5,3,2,1,5 ];
var W = 2;
function solution(X,Y,W) {
X.sort();
var res = 0;
var i = 0;
// var N = X.length();
while (i < X.length) {
++res;
var temp_start = X[i];
while (i < X.length && X[i] <= temp_start + W) {
++i;
}
}
// console.log(res);
return res;
}
solution(X,Y,W)
第二题:给定一个字符串S,由0-9组成,使用S中的数字创建一个具有最大的回文数。至少使用一位数字,可以对数字重新排序。 例如:给定 11999,返回 91919;给定39878返回878。
function solution(s) {
let count = new Array(0,0,0,0,0,0,0,0,0,0); // 数组大小为10,元素初始化为0,对应0-9
let res = ""; // 存储答案
let res1=""
for(let i=0;i<s.length;i++){
if(s[i]){
let c=s[i];
count[c]++;
}
}
for (let i = 9; i >= 0; --i) {
if (res === "" && i === 0) {
count[0] = 1; // 如果遍历到0了,字符串还是空的,那么让0的数量为1,避免出现前导0
}
for (let j = Math.floor(count[i] / 2); j > 0; j--) {
res += i; // 把i转为字符存入答案
}
}
for (let i = 9; i >= 0; --i) {
if (count[i] % 2) {
res += i; // 把i转为字符存入答案
//console.log("count[i] % 2):",count[i] % 2);
break;
}
}
for (let i = 0; i <= 9; ++i) {
for (let j = Math.floor(count[i] / 2); j > 0; --j) {
res += i; // 把i转为字符存入答案
}
}
console.log(res);
return res;
}
let s = "39788";
solution(s);
```