/**
* @param {number[]} nums
* @return {number}
*/
var minOperations = function(nums) {
let res = 0;
for(let i=1;i<nums.length;i++) {
if(nums[i] <= nums[i-1]) {
res+= (nums[i-1] - nums[i] +1);
nums[i] = nums[i-1] +1;
}
}
return res;
};
/**
* @param {number[][]} points
* @param {number[][]} queries
* @return {number[]}
*/
var countPoints = function(points, queries) {
let ans = [];
for(let cir of queries) {
let r = cir[2];
let x0 = cir[0];
let y0 = cir[1];
let cnt = 0;
for(let point of points) {
let x = point[0];
let y = point[1];
if(Math.pow(x-x0, 2) + Math.pow(y-y0, 2) <= Math.pow(r,2)) cnt++;
}
ans.push(cnt);
}
return ans;
};
/**
* @param {number[]} nums
* @param {number} maximumBit
* @return {number[]}
*/
var getMaximumXor = function(nums, maximumBit) {
let tmp = nums[0];
for(let i=1;i<nums.length;i++) {
tmp = (tmp,nums[i],(tmp^nums[i]));
}
let MAX = -1;
for(let i=0;i<Math.pow(2,maximumBit);i++) if((tmp^i) > MAX) MAX=tmp^i;
let ans = [MAX ^ (tmp)];
for(let i=nums.length-1;i>=1;i--) {
ans.push( MAX ^ (tmp ^ nums[i]) );
tmp = tmp ^ nums[i];
}
return ans;
};
第四题不会做,补一道类似的题目:
/**
* @param {number[]} destination
* @param {number} k
* @return {string}
*/
var kthSmallestPath = function(destination, k) {
let [n, m] = destination;
const list = new Array(m + n + 1);
list[0] = 1;
for (let i = 1; i <= m + n; i++) {
list[i] = list[i - 1] * i;
}
let sum = 0;
let cur = "";
let h = 0;
while (sum < k) {
const temp = list[n + h - 1] / (list[h] * list[n - 1]);
if (sum + temp == k) {
cur += `${"H".repeat(m - h)}V${"V".repeat(n - 1)}${"H".repeat(h)}`;
return cur;
} else if (sum + temp < k) {
h++;
sum += temp;
} else {
cur += `${"H".repeat(m - h)}V`;
n--;
k -= sum;
sum = 0;
m = h;
h = 0;
}
}
};