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

翻转数位00

题目链接

翻转数位

题目描述

注意点

  • 可以将一个数位从0变为1
  • 找出能够获得的最长的一串1的长度(必须是连续的)

解答思路

  • 参照题解使用动态规划解决本题,对于任意一个位置i,dp[i][0]表示到达且包含第i位不翻转0最长1的长度,dp[i][1]表示到达且包含第i位翻转一个数位0最长1的长度
  • 如果位置idx的数位是0,那么如果不翻转0,该位置dp[idx][0] = 0,如果翻转0,该位置dp[idx][1] = dp[idx - 1][0] + 1;如果位置i的数位是1,那么如果不翻转0,该位置dp[idx][0] = dp[idx - 1][0] + 1,如果翻转0,该位置dp[idx][1] = dp[idx - 1][1] + 1,观察规律可得,任意位置idx的dp值只与idx - 1位置有关,所以并不需要存储所有位置的dp值,只需要保存前一个位置的dp值并实时更新res的值即可

代码

class Solution {public int reverseBits(int num) {int res = 0;// dp[i][0]表示到达且包含第i位不翻转0最长1的长度// dp[i][1]表示到达且包含第i位翻转一个数位0最长1的长度int[][] dp = new int[33][2];// int idx = 1;for (int idx = 1; idx <= 32; idx++) {if ((num & 1) == 1) {dp[idx][0] = dp[idx - 1][0] + 1;dp[idx][1] = dp[idx - 1][1] + 1;} else {dp[idx][0] = 0;dp[idx][1] = dp[idx - 1][0] + 1;}res = Math.max(res, Math.max(dp[idx][0], dp[idx][1]));num >>= 1;}return res;}
}

关键点

  • 动态规划的思想
  • 根据前一个位置的状态推出现在位置的状态
http://www.lryc.cn/news/375841.html

相关文章:

  • 工具:安装R语言的R包的各种方法
  • 注意力机制和Transformer模型各部分功能解释
  • 短路是怎么形成的
  • 【ZZULIOJ】1106: 回文数(函数专题)
  • 数据库设计规范总结
  • 深度学习(九)——神经网络:最大池化的作用
  • 「前端+鸿蒙」鸿蒙应用开发-ArkTS语法说明-组件声明
  • python的subprocess 模块
  • 【Arc gis】使用DEM提取流域范围
  • 大模型技术工程师:抓住时代机遇,成为行业精英_
  • 孟德尔随机化R包:TwoSampleMR和MR-PRESSO安装
  • 6月18日 Qtday4
  • Vue3模拟国足18强赛抽签
  • mesa编译器nir信息储存问题
  • windows下mysql设置开机自启动
  • L2-002 链表去重(C++)
  • 异或运算在面试题中的应用
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 单词大师(100分) - 三语言AC题解(Python/Java/Cpp)
  • LabVIEW在SpaceX的应用
  • 【Android面试八股文】讲一讲String、StringBuffer和StringBuilder在进行字符串操作时候的效率
  • [自动驾驶 SoC]-4 特斯拉FSD
  • PostgreSQL源码分析——物化视图
  • 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(七)---- 系统调用函数与GDB(Lab: system calls)
  • ORA-12560: TNS:协议适配器错误
  • 不容小觑的“白纸黑字”:银行重空凭证的风险与防控
  • 30v-180V降3.3V100mA恒压WT5107
  • Spring Boot 和 Spring Cloud 的区别及选型
  • 【神经网络】图像的数字视角
  • ChatGPT的问题与回复的内容导出(Chorme)
  • 游戏开发中的坑之十四 photoshop的javascript脚本批量修改分辨率