【LeetCode每日一题】——717.1比特与2比特字符

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时空频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 数组

二【题目难度】

  • 简单

三【题目编号】

  • 717.1比特与2比特字符

四【题目描述】

  • 有两种特殊字符:
    • 第一种字符可以用一比特 0 表示
    • 第二种字符可以用两比特(1011)表示
  • 给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true

五【题目示例】

  • 示例 1:

    • 输入: bits = [1, 0, 0]
    • 输出: true
    • 解释: 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。
      所以最后一个字符是一比特字符。
  • 示例 2:

    • 输入:bits = [1,1,1,0]
    • 输出:false
    • 解释:唯一的解码方式是将其解析为两比特字符和两比特字符。
      所以最后一个字符不是一比特字符。

六【题目提示】

  • 1 <= bits.length <= 1000
  • bits[i]01

七【解题思路】

  • 本题的思路比较简单,根据题意去模拟整个过程即可:
    • 若当前位为0,那么一定可以组成第一种字符,那么单指针向后移动一位
    • 若当前位位1,那么一定可以组成第二种字符,那么单指针向后移动两位
    • 最后若单指针可以落在数组最后一个位置,那么就说明符合题意
  • 最后返回结果即可
  • 所以整个题目就是模拟+单指针移动的过程
  • 具体细节可以参考下面的代码

八【时空频度】

  • 时间复杂度: O ( n ) O(n) O(n) n n n为传入的数组的长度
  • 空间复杂度: O ( 1 ) O(1) O(1)

九【代码实现】

  1. Java语言版
class Solution {
    public boolean isOneBitCharacter(int[] bits) {
        // 初始化index为0,表示当前扫描的位
        int index = 0;
        // 获取数组的长度
        int n = bits.length;
        
        // 遍历数组直到倒数第二个元素
        while (index < n - 1) {
            // 如果当前位是0,说明这是一个1位字符,index向后移动1位
            if (bits[index] == 0) {
                index += 1;
            } 
            // 如果当前位是1,说明这是一个2位字符,index向后移动2位
            else if (bits[index] == 1) {
                index += 2;
            }
        }
        
        // 如果index正好到了数组的最后一位,则返回true,表示最后一个字符是1位字符
        return index == n - 1;
    }
}
  1. Python语言版
class Solution:
    def isOneBitCharacter(self, bits: List[int]) -> bool:
        # 初始化index为0,表示当前扫描的位
        index = 0
        # 获取数组的长度
        n = len(bits)
        # 遍历数组直到倒数第二个元素
        while index < (n - 1):
            # 如果当前位是0,说明这是一个1位字符,index向后移动1位
            if bits[index] == 0:
                index += 1
            # 如果当前位是1,说明这是一个2位字符,index向后移动2位
            elif bits[index] == 1:
                index += 2
        # 如果index正好到了数组的最后一位,则返回true,表示最后一个字符是1位字符
        return index == n - 1
  1. C语言版
bool isOneBitCharacter(int* bits, int bitsSize)
{
    // 初始化index为0,表示当前扫描的位
    int index = 0;
    // 获取数组的长度
    int n = bitsSize;
    // 遍历数组直到倒数第二个元素
    while (index < (n - 1))
    {
        // 如果当前位是0,说明这是一个1位字符,index向后移动1位
        if (bits[index] == 0)
        {
            index += 1;
        }
        // 如果当前位是1,说明这是一个2位字符,index向后移动2位
        else if (bits[index] == 1)
        {
            index += 2;
        }
    }
    // 如果index正好到了数组的最后一位,则返回true,表示最后一个字符是1位字符
    return index == n - 1;
}

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. Python语言版
    在这里插入图片描述

  3. C语言版
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux学习笔记11 系统启动初始化,服务和进程管理(下)

前文 前文介绍了系统启动初始化程序&#xff0c;介绍了systemd的基础知识。这里主要看一下我们systemd的单元管理和常用的命令以及示例。 Linux学习笔记10 系统启动初始化&#xff0c;服务和进程管理&#xff08;上&#xff09;-CSDN博客 systemd单元管理 启动服务 这很常…

pnpm安装electron出现postinstall$ node install.js报错

pnpm install --registryhttp://registry.npm.taobao.org安装依赖包的时候出现了postinstall$ node install.js报错 找到install.js 找到downloadArtifact方法&#xff0c;添加如下代码 mirrorOptions:{mirror:"http://npmmirror.com/mirrors/electron/"}http://n…

程序执行堆栈执行模拟

所有的文件都是在硬盘&#xff08;磁盘&#xff09;上&#xff0c;调用时先调用javac指令的jdk编译成.class然后被java指令的jre送到内存中&#xff0c;java在内存中有自己的一片区域叫JVM&#xff0c;编译进来的文件首先进入方法区。 staitc的属性就是在进入内存的时候开辟了一…

windows平台使用C#创建系统服务

使用 C# 在 Windows 平台创建和管理系统服务 在 Windows 平台上&#xff0c;系统服务&#xff08;Windows Service&#xff09;是一种运行在后台、无需用户交互的应用程序。系统服务广泛应用于长期任务处理、网络监听、后台调度等场景。本文将详细介绍如何使用 C# 创建一个 Win…

JVM_总结详解

1、CPU和内存的交互 了解jvm内存模型前&#xff0c;了解下cpu和计算机内存的交互情况。【因为Java虚拟机内存模型定义的访问操作与计算机十分相似】 有篇很棒的文章&#xff0c;从cpu讲到内存模型:[什么是java内存模型&#xff1f;] 在计算机中&#xff0c;cpu和内存的交互最…

TLinux 3.1 (Centos 8)修改网卡设备名

原网卡设备名&#xff1a;ifcfg-enp17s 新网卡设备名&#xff1a;ifcfg-eth0 1. 修改接口配置文件名 rename /etc/sysconfig/network-scripts/ifcfg-enp17s /etc/sysconfig/network-scripts/ifcfg-eth0 2. 修改接口配置文件 vi /etc/sysconfig/network-scripts/ifcfg-eth…

ElasticSearch7.x入门教程之全文搜索(七)

文章目录 前言一、多条件查询&#xff1a;bool query二、更加精准查询&#xff1a;dis_max query总结 前言 这里再接着上一篇文章继续记录。非常感谢江南一点雨松哥的文章。 欢迎大家去查看&#xff0c;地址&#xff1a;http://www.javaboy.org 一、多条件查询&#xff1a;boo…

基于springboot 的体质测试数据分析及可视化设计LWPPT

技术可行性&#xff1a;技术背景 本企业网站在Windows操作系统中进行开发&#xff0c;并且目前PC机的性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的&#xff0c;也是当下广泛应用的技术之一。 系统的开发环境和配置都是可以自行安装的&#x…

oracle小技巧-解决特殊密码字符而导致的exp错误

在使用oracle数据库的时候&#xff0c;我们经常会利用exp工具对某些表进行导出。但有些时候&#xff0c;因我们用户密码为安全性设有特殊字符&#xff0c;导致exp导出时候报&#xff1a;“EXP-00056和ORA-12154”&#xff0c;今天我们就分享下如何通过设置符号隔离的小技巧解决…

【ArcGIS Pro实操第11期】经纬度数据转化成平面坐标数据

经纬度数据转化成平面坐标数据 数据准备ArcGIS操作步骤-投影转换为 Sinusoidal1 投影2 计算几何Python 示例 另&#xff1a;Sinusoidal (World) 和 Sinusoidal (Sphere) 的主要区别参考 数据准备 数据投影&#xff1a; 目标投影&#xff1a;与MODIS数据相同&#xff08;Sinu…

病理组学分析系列教程1:使用Python-histolab进行病理图像预处理,tiles切片自动生成

首先&#xff0c;先上参考资料链接&#xff1a; 了解数字病理影像图片WSI如何切割-使用histolab 视频详细讲解使用histolab进行病理图像切分 详细介绍数字病理图像的存储格式及格式转换工具介绍 一、病理图像预处理 相信很多朋友对于WSI这种巨大的病理图像的预处理都觉得束…

kubernetes——part3-2 集群声明式文件YAML

一、YAML介绍 YAML 的意思是&#xff1a;仍是一种标记语言&#xff0c;但为了强调这种语言以数据做为中心&#xff0c;而不是以标记语言为重点。是一个可读性高&#xff0c;用来表达数据序列的格式。 二、基本语法 1.低版本缩进时不允许使用Tab键&#xff0c;只允许使用空格…

使用Postman搞定各种接口token实战

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…

什么是换电系统?驱动新能源汽车发展的“能源驿站”

随着新能源汽车保有量上升&#xff0c;新能源汽车充换电设施需求量同步增加。由于我国土地、电力资源相对紧张&#xff0c;随着车辆保有量继续增加&#xff0c;换电模式有望成为对充电模式的良好补充&#xff0c;具备广阔的中长期发展前景。蔚来是换电领域的先行者&#xff0c;…

Power BI - Connect to SharePoint online list with Image column

1.简单介绍 当前SharePoint online list有modern和classic两种模式&#xff0c;现在使用modern模式的比较多。list中有Image类型的列&#xff0c;Power BI如何连接到SharePoint list并显示image呢 note, SharePoint list中的Image列&#xff0c;Lookup列&#xff0c;People列…

[在线实验]-Redis Docker镜像的下载与部署

镜像下载 dockerredis镜像资源-CSDN文库 加载镜像 使用以下命令从redis.tar文件中加载Docker镜像 docker load --input redis.tar 创建映射目录 为了确保Redis的数据能够持久化&#xff0c;我们需要创建一个本地目录来存储这些数据 mkdir -p datasource/docker/redis 运…

redis学习(016 实战:黑马点评:分布式锁:Redisson)

黑马程序员Redis入门到实战教程&#xff0c;深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 总时长 42:48:00 共175P 此文章包含第64p-第p68的内容 文章目录 分布式锁的优化Redission操作编写代码 Redission可以实现可重入锁的原理lua脚本编写可重入锁获取…

SystemUI 下拉框 Build 版本信息去掉

需求及场景 去掉SystemUI 下拉框 Build 版本信息 如下图所示&#xff1a;去掉 12 &#xff08;SP1A.201812.016) 了解 去掉之前我们先了解它是个什么东西:其实就是一个Build RTM 信息显示 Android_12_build_SP1A.210812.016 修改文件 /frameworks/base/packages/Syste…

UE5 打包报错 Unknown structure 的解决方法

在虚幻引擎5.5 打包报错如下&#xff1a; UATHelper: 打包 (Windows): LogInit: Display: LogProperty: Error: FStructProperty::Serialize Loading: Property ‘StructProperty /Game/Components/HitReactionComponent/Blueprints/BI_ReactionInterface.BI_ReactionInterface…

电子电气架构 --- 面向服务的汽车诊断架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…