当前位置: 首页 > news >正文

Leetcode 3315. Construct the Minimum Bitwise Array II

  • Leetcode 3315. Construct the Minimum Bitwise Array II
    • 1. 解题思路
    • 2. 代码实现
  • 题目链接:3315. Construct the Minimum Bitwise Array II

1. 解题思路

这一题有点类似脑筋急转弯,想明白了就很简单,想不明白的话的话就比较麻烦了……

这道题本质上就是给出任意一个数n,然后找到一个最小的数i,使得i | (i+1) = n

显然n必须为奇数,否则不会有解,然后对于任意一个奇数,我们要看怎么找最小的i,这个事实上就是把这个数n用二进制表示出来,然后从后往前找到最后一个连续的1,将其变为0即可。

2. 代码实现

给出python代码实现如下:

class Solution:def minBitwiseArray(self, nums: List[int]) -> List[int]:def fn(num):if num == 2:return -1d = 1while num & d > 0:d = d << 1d = d >> 1return num - dreturn [fn(num) for num in nums]

提交代码评测得到:耗时57ms,占用内存16.5MB。


http://www.mrgr.cn/news/49558.html

相关文章:

  • 执行powershell脚本出错:未对文件进行数字签名
  • lenovo联想 ThinkPad E14 Gen 2,E15 Gen 2 AMD(20T6,20T7,20T8,20T9)原厂Win10系统镜像下载
  • 2275. 按位与结果大于零的最长组合
  • 生信服务器配置:优化生物信息学数据处理的最佳实践
  • Redis 典型应用之缓存
  • 问题专题 编译问题
  • 【Java数据结构】二叉树
  • ZED相机的使用
  • 基于Arduino的红外遥控智能小车实现方法
  • C++STL(2)
  • Gin框架教程01:创建一个简单的 Gin 应用
  • 新媒体运营基本步骤
  • EditPlus安装使用
  • R语言绘制聚类热图
  • shell错误修改
  • Xilinx远程固件升级(一)——QuickBoot方案
  • 伯努利分布(Bernoulli distribution)的两次成功之间间隔次数的分布
  • git error: You have not concluded your merge (MERGE_HEAD exists).
  • Lumerical脚本语言——材料数据库(Material database)
  • javaScript if else factory function