Leetcode 600. 不含连续1的非负整数 C++

2023-11-18

Leetcode 600. 不含连续1的非负整数

题目

给定一个正整数 n,找出小于或等于 n 的非负整数中,其二进制表示不包含 连续的1 的个数。

示例:

输入: 5
输出: 5
解释: 
下面是带有相应二进制表示的非负整数<= 5:
0 : 0
1 : 1
2 : 10
3 : 11
4 : 100
5 : 101
其中,只有整数3违反规则(有两个连续的1),其他5个满足规则。

说明: 1 <= n <= 109

题解

动态规划
dp[i]表示i位数字,不含连续1的非负整数的个数。
因此,有两种可能,

  • 第i位为1时,第i-1位一定是0,故dp[i] = dp[i-2]
  • 第i位为0时,第i-1位就没有约束条件,故dp[i] = dp[i-1]

综上,dp[i] = dp[i-1] + dp[i-2]
我们对num,从高位到低位进行判断,当第i+1位数为1时,我们就假设第i+1位为0,高位和num一致,那么ans += dp[i],即i位有效数字。同时,如何num有连续1的情况下,我们就直接break
详细过程见代码

代码

	int findIntegers(int num) {
        if(num == 0)    return 1;
        if(num == 1)    return 2;
        vector<int> dp(32,0);
        dp[0] = 1;
        dp[1] = 2;
        for(int i=2; i<32; i++)		//求解i位数,不含连续1的非负整数的个数
            dp[i] = dp[i-1]+dp[i-2];
        int ans=1,i=30;
        bool pause=false;
        while(i>=0){
            if((num&(1<<i)) != 0){
                ans += dp[i];
                if(pause){
                    ans--;		//本身含有连续1,故要去掉自己
                    break;
                }
                pause = true;
            }else   pause=false;
            i--;
        }
        return ans;
    }

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/non-negative-integers-without-consecutive-ones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Leetcode 600. 不含连续1的非负整数 C++ 的相关文章

  • 【毕业设计】基于SSM实现酒店管理系统(论文+源码+ppt+视频)

    技术架构SSM 1 Spring是一个开源的Java Java EE全功能栈的应用程序框架 以Apache许可证形式发布 也有 NET平台上的移植版本 当需要用到某一对象时不需要程序员在代码中增加一个新对象而是在可扩展标记语言 extens
  • php中流行的rpc框架详解(修改版)

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 什么是RPC框架 如果用一句话概括RPC就是 远程调用框架 Remote Procedure Call 那什么是远程调用 通常我们调用一个php中的方法 比如这样一个函数方
  • Windows 文件共享功能使用教程,局域网多台电脑之间传送文件

    设想一下 家里或者公司有多台电脑 连接同一个Wifi 也就是处于同一个局域网中 在不能使用微信 网盘的文件传输功能的情况下 这多台电脑之间 就只能用U盘传送数据吗 不 Windows系统中已经提供了文件共享功能 比如一些公司或者学校机房经常
  • H5 静态页面跳转微信小程序

    官方文档指引 开放标签说明文档 静态网站 H5 跳小程序 H5 静态页面跳转微信小程序 准备工作 开放标签 开放对象 版本要求 使用步骤 1 绑定域名 2 引入 jweixin js 需要 1 6 0 版本 3 设置 wx config 4
  • 服务器时间管理器

    时间戳管理器 using System using UnityEngine public class SyncTime Singleton
  • Tomcat中404/500 错误,自定义错误页面

    Tomcat中404 500 错误 自定义错误页面 当服务器出现404 500错误时候希望能够给用户友好的现实界面 只需要在项目的web xml中添加一些配置
  • unity和ffmpeg修改局部视频速度

    unity版本2020 3 17 前言 最近有个功能是 在一个展馆里面 有一个摄像头旋转拍照 拍一圈 本来功能很简单 就录屏就可以了上传生成二维码就ok了 但是 需要一个视频中间快两边变慢的效果 查了很多资料 最终决定使用ffmpeg和un
  • 移动端H5页面,上下滑动翻页

    升级版本 https blog csdn net qq 16494241 article details 122239278 改用原生JS编写 此版本基于JQ 可设置页面内容元素内部滚动及滚动至顶部或最底部触发翻页效果 PC端模式也可鼠标滑
  • Mac中安装anaconda3的2种方法:手动或homebrew安装

    Mac 上非常好用的包管理器 Homebrew 我们经常用它来安装软件包 它不仅可以安装MySQL MongoDB等软件包 还可以用Homebrew cask安装图形界面的 App 如谷歌浏览器等 也可以用终端上的 Mac App Stor
  • GetThreadContext failed报错解决方法

    最近编译后的项目总是不稳定 运行一会就崩溃 然后报错GetThreadContext failed 网上报这个错误的还挺多的 不过大部分都是玩家遇到的 GetThreadContext failed的原因很多 但我这次绝对是被steamVR
  • 斯皮尔曼(Spearman)\ 皮尔逊(Pearson)相关系数计算

    斯皮尔曼 Spearman 相关 斯皮尔曼 Spearman 相关是衡量两个变量的依赖性的 非参数 指标 它利用单调方程评价两个统计变量的相关性 如果数据中没有重复值 并且当两个变量完全单调相关时 斯皮尔曼相关系数则为 1或 1 scipy
  • Android Studio中SVN重新关联项目,使其文件变色

    一般我们的项目中文件夹中通过svn关联 通过Android Studio打开按道理的话 可算是关联了 这里先普及下 SVN的文件的颜色所代表的意思 如下 绿色 已加入VCS 但未提交 红色 未加入VCS 白色 已提交 蓝色 有修改 问题 在
  • brpc源码解析(十七)—— bthread上的类futex同步组件butex详解

    文章目录 一 futex简介 二 butex源码解析 2 1 butex相关数据结构 2 2 butex主要机制 2 2 1 butex wait 2 2 2 butex wake 我们知道在linux 下 锁和其他一些同步机制都会用到fu
  • 实验三 数组与指针实验

    实验目的 1 学习使用数组数据对象 2 掌握指针的使用方法 3 学习通过动态内存分配实现动态数组的定义和使用 并体会指针在其中的作用 4 掌握静态成员的使用方法 5 练习通过Debug观察指针的内容及其所指对象的内容 实验内容 1 运行下列
  • 使用 mapstruct 和 querydsl 时 compile 问题备忘

    参考 https stackoverflow com questions 74825653 querydsl 5 with mapstruct issues while generating resources 问题 在使用 springb
  • C++中的typeid

    2023年8月10日 周四下午 目录 概述 typeid的用法 用法1 用法2 用法3 举例说明 概述 typeid是 C 中的运算符 用于获取表达式或类型的运行时类型信息 它返回一个std type info对象 该对象包含有关类型的信息
  • JQuery全部过滤选择器详细介绍下

    文章目录 JQuery全部过滤选择器详细介绍 下 属性过滤选择器 属性过滤选择器 应用实例 代码演示 子元素过滤选择器 子元素过滤选择器基本介绍 5 nth child 选择器详解如下 子元素过滤选择器示例 应用实例 代码演示 表单属性过滤
  • SpringBoot整合Swagger

    一 Swagger 认识Swagger Swagger 是一个规范和完整的框架 用于生成 描述 调用和可视化 RESTful 风格的 Web 服务 总体目标是使客户端和文件系统作为服务器以同样的速度来更新 文件的方法 参数和模型紧密集成到服
  • 开关电源Buck电路CCM及DCM工作模式

    一 Buck开关型调整器 二 CCM及DCM定义 1 CCM ContinuousConduction Mode 连续导通模式 在一个开关周期内 电感电流从不会到0 或者说电感从不 复位 意味着在开关周期内电感磁通从不回到0 功率管闭合时
  • (详解与使用)Sharding-JDBC通过mysql主从复制来进行项目优化

    目录 背景 一 环境准备 1 mysql的主从复制环境 2 导入maven坐标 3 在配置文件 application yml 中配置读写分离规则 4 在配置文件中配置允许bean定义覆盖配置项 5 配置完毕可以测试 背景 面对日益增加的系

随机推荐