第50场双周赛

1827.最少操作使数组递增

/**
 * @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;
};

1828. 统计一个圆中点的数目

/**
 * @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;
};

1829. 每个查询的最大异或值

/**
 * @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;
};

第四题不会做,补一道类似的题目:

1643. 第 K 条最小指令

/**
 * @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;
    }
  }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值