leetcode每日一题34

news2025/2/23 14:13:35

89.格雷编码

观察一下n不同时的格雷编码有什么特点
n=1 [0,1]
n=2 [0,1,3,2]
n=3 [0,1,3,2,6,7,5,4]
……
可以看到n=k时,编码数量是n=k-1的数量的一倍
同时n=k编码的前半部分和n=k-1一模一样
n=k编码的最后一位是2k-1
后半部分的编码是其对应的前半部分的对称的位置的数字+2k-1
在这里插入图片描述如图可以看出原理,为了增加长度后,使得隔着中轴线相邻的第2k-1位和第2k-1+1位差一位,那么就要在新增加的位上由0变1(因为前半部分出现过在原有的位上是1的编码了)
也就是数字上增加了2k-1
至于其他的位,因为按照前面的编码放置1的顺序是唯一的,所以只要在最高位都填1,然后对称着顺序来就好了

因此代码为

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> gray;
        gray.push_back(0);
        gray.push_back(1);
        if(n==1)
            return gray;
        for(int i=2;i<=n;i++)
        {
            for(int j=pow(2,i-1)-1;j>=0;j--)
            {
                gray.push_back(gray[j]+pow(2,i-1));
            }
        }
        return gray;
    }
};

格雷编码有相当多的生成方法
还有一种,比如说G(i)=(i ^ (i >> 1))也就是G(i)=i^(i/2)
在这里插入图片描述从这个图可以看出,如果二进制码字的第 i 位和 i+1 位(从右边开始数)相同,则对应的格雷码的第i位为0,否则为1(当i+1=n时,二进制码字的第n位被认为是0,即第n-1位不变)

class Solution {
public:
    vector<int> grayCode(int n) {
        vector<int> gray;
        for(int i=0;i<pow(2,n);i++)
            gray.push_back(i^i>>1);
        return gray;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1261146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab论文插图绘制模板第128期—函数三维折线图(fplot3)

在之前的文章中&#xff0c;分享了Matlab函数折线图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下函数三维折线图。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据代码』已上传资源群中&#xff0c;加群的朋友请自行下载。有需要的朋友可以关…

【后端】数据字典自动生成枚举

前言 随着我老板给我灌溉的思想,逐渐开始利用代码来完成一些重复性且没有创造性的工作(我变懒啦),当我发现数据字典可以生成枚举从而大大减少开发时间的时候,我意识到事情的重要性。 数据字典 我一开始在网上找各种代码生成器的框架,然后突然意识到,这个不就是简单的…

C语言键盘输入字符串小写转大写输出及scanf的小问题解决

1.博主在学习C语言时&#xff0c;也没太关注C语言的一些细节问题&#xff0c;导致后面有人问问题的时候一时没回答出来&#xff0c;也就是所谓的基础不牢地动山摇&#xff0c;比如这一次有同学问的scanf键盘输入的小问题&#xff0c;折腾了一阵子还是想出来问题所在。 2.废话不…

Docker:深入解析Nexus技术构建可靠的软件仓库管理系统

1、简述 在现代软件开发中&#xff0c;有效的软件仓库管理是确保项目成功的关键一环。Nexus Repository Manager作为一种流行的仓库管理系统&#xff0c;为开发人员提供了强大的工具&#xff0c;用于存储、检索和管理软件构建。本文将深入解析Nexus技术&#xff0c;探讨其关键…

瑞数五代ast反混淆笔记二

第一部分 瑞数五代ast反混淆笔记一 第二部分 瑞数五代ast反混淆笔记二 文章目录 前言一、分析思路二、轨迹合并思路三、避免重复调用一个轨迹四、自己调用自己所在的函数五、语句中包含if的处理六、语句中包含try的处理七、节点中包含影响自身值的操作总结 前言 当if转为switc…

机器视觉 AI 数据集制作

工业中&#xff0c;机器视觉物体分拣时&#xff0c;需要制作&#xff0c;数据集&#xff0c;那么&#xff0c;一般情况下&#xff0c;可以选择几个物体的几张图片&#xff0c;或者视频&#xff0c;将待识别的物体的掩模扣取出来&#xff0c;随机的贴在 传送带背景中&#xff0c…

多线程04 死锁,线程可见性

前言 前面我们讲到了简单的线程安全问题以及简单的解决策略 其根本原因是cpu底层对线程的抢占式调度策略,随机调度 其他还有一些场景的问题如下 1.多个线程同时修改一个变量问题 2.执行的操作指令本身不是原子的 比如自增操作就分为三步,加载,自增,保存 3.内存可见性问题 4.指令…

【vue】浏览器安装vue插件不生效

上一篇&#xff1a;浏览器安装vue插件 https://blog.csdn.net/m0_67930426/article/details/134598104 目录 问题情景 解决办法 问题情景 输入框无内容 解决办法 添加 Vue.config.devtools true; 并且控制台不显示的vue又出现

13.端点、簇、属性

源码地址&#xff1a;13.端点、簇、属性 端点&#xff08;endPoint&#xff09; 一个端点就是一个应用 一个字节编号&#xff0c;数据收和发送的基本单元&#xff0c;在模块通信的时候&#xff0c;发送模块必须指定收发双方模块的网络地址和端点。端点要使用必须要和模块里的…

「Linux」git的安装与使用

&#x1f4bb;文章目录 &#x1f4c4;前言安装git的使用配置git初始化 git 仓库提交文件推送到远端使用HTPPS方式&#xff1a;SSH方式 &#x1f4d3;总结 &#x1f4c4;前言 git是一款多平台的版本管理器&#xff0c;用于对代码进行版本控制&#xff0c;如果你还不知如何安装gi…

Git指定分支或文件回退到指定版本

文章目录 一、分支回滚1.1、使用 git reset 命令1.2、使用 git revert 命令1.3、使用 git checkout 命令 二、文件回滚2.1、回滚未提交文件2.2、回滚已提交文件2.2.1、首先查看文件的历史版本2.2.2、找到你想要还原的版本2.2.3、将文件还原到你想要还原的版本2.2.4、提交代码 三…

【数据结构初阶(5)】链式队列的基本操作实现

文章目录 队列的定义初始化队列队尾入队列队头出队列取队头元素取队尾元素获取队列有效元素个数判断队空销毁队列 因为队列比较简单&#xff0c;关于队列的概念就不过多赘述了&#xff0c;本文只讲链队的基本操作实现 队列的定义 定义队列结点结构 链队中的每个结点都应该包…

RK3568平台开发系列讲解(Linux系统篇)pinctrl api介绍及实验

&#x1f680;返回专栏总目录 文章目录 一、pinctrl函数介绍二、设备树案例三、驱动案例 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;本篇将介绍pinctrl api及其使用案例 。 一、pinctrl函数介绍 ①获取设备对应的 pinctrl…

在Matlab里安装gurobipy怎么安装教程

在Matlab 里安装gurobipy 先在CMD里激活&#xff0c; 然后添加系统环境变量 GRB_LICENSE_FILEC:\gurobi10.2\gurobi.lic 然后输入 addpath(D:\gurobi1003\win64\matlab) addpath(C:\gurobi1003\win64\matlab) addpath(C:\gurobi1002\win64\matlab) C:\gurobi1003\win64\m…

多功能智慧路灯系统整体解决方案介绍

在不改变现有城市景观的前提下&#xff0c;利用现有路灯改造&#xff0c;或新建多功能叁仟智慧路灯的方法&#xff0c;可实现城市无线网络、视频监控、物联传感网络、新能源充电系统、网格信息化管理的全覆盖&#xff0c;有效解决信息化设备选址难、取电难等问题。在目前无线通…

可以免费使用的Axure在线版来了

Axure作为一种功能强大的原型设计工具&#xff0c;一直受到设计师的青睐。然而&#xff0c;其高昂的价格可能成为一个门槛&#xff0c;限制了一些设计师的选择。但不用担心&#xff0c;现在有一个免费的Axure在线工具即时设计&#xff0c;功能更完整&#xff0c;更划算&#xf…

智能优化算法应用:基于飞蛾扑火算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于飞蛾扑火算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于飞蛾扑火算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.飞蛾扑火算法4.实验参数设定5.算法结果6.参考…

小程序如何进行版本回退

当商家决定回退小程序版本时&#xff0c;可能是因为新版本出现了一些问题或者不符合预期&#xff0c;需要恢复到之前的稳定版本。下面具体介绍怎么回退小程序的版本。 在小程序管理员后台->版本设置处&#xff0c;点击版本回退。确认后&#xff0c;小程序会回退到上一次的版…

基于springboot-“有光”摄影分享网站系统(2023年☆全网唯一)【附源码|数据库|表结构|万字文档(LW)|技术文档|说明文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户账号、密码、姓名、手机号、身份证号、性别、邮箱 用户&#xff1a; ①首页、公告资讯展示、图片素材展示、活动展示、视频素材展示、查看更多 ②论坛、发布帖子、活动、活动标题、活动类型、公告资讯、公告标题、公告…

Day43力扣打卡

打卡记录 子数组的最小值之和&#xff08;乘法原理 单调栈&#xff09; 大佬的题解 class Solution:def sumSubarrayMins(self, arr: List[int]) -> int:n len(arr)# 左边界 left[i] 为左侧严格小于 arr[i] 的最近元素位置&#xff08;不存在时为 -1&#xff09;left, s…