【C语言刷LeetCode】717. 1 比特与 2 比特字符(E)
【
有两种特殊字符:
第一种字符可以用一比特 0 表示
第二种字符可以用两比特(10 或 11)表示
给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true 。
示例 1:
输入: bits = [1, 0, 0]
输出: true
解释: 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。
所以最后一个字符是一比特字符。
示例 2:
输入:bits = [1,1,1,0]
输出:false
解释:唯一的解码方式是将其解析为两比特字符和两比特字符。
所以最后一个字符不是一比特字符。
提示:
1 <= bits.length <= 1000
bits[i] 为 0 或 1
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/1-bit-and-2-bit-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
】
这道题首先要读懂题意,然后需要逆序遍历。
逆序遍历优势在于不用遍历完全部数组。
关键点是只有 “0”,“10”,“11” 三种编码。
首先,观察数组最后一位,题干中说了,肯定是 0,但是我们不能确定是 “0” 还是 “10”,
所以采取的策略是:看看这个 0 前面有多少个**连续**的 1,
为什么是连续呢 ? 因为我们只要碰到 0 时,不管是 “0” 也好, “10” 也好,都代表着一个字符的结尾。
注意:没有 “1” 这个编码!我们只需看看连续的 1 个数是奇数还是偶数,
如果是偶数,代表这些连续的 1 都组成了“11”,
如果是奇数,代表最后一个“1”落单了,由于没有 “1” 这个编码,所以只能和最后一位 “0” 进行配对了。
bool isOneBitCharacter(int* bits, int bitsSize){int i;int cnt = 0;for (i = bitsSize - 2; i >= 0; i--) { // 求最后又多少个连续的1if (bits[i] == 1) {cnt++;} else {break;}}if (cnt % 2 == 0) {return true;} else {return false;}
}
【C语言刷LeetCode】717. 1 比特与 2 比特字符(E)相关推荐
- c语言编程 插队排身高,【C语言刷LeetCode】406. 根据身高重建队列(M)
[ 假设有打乱顺序的一群人站成一个队列. 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数. 编写一个算法来重建这个队列. 注意: 总人数少于110 ...
- 【C语言刷LeetCode】883. 三维形体投影面积(E)
[ 格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 现在,我们查看这 ...
- 动态规划系列 之 股票相关问题 (C语言刷leetcode)
2020-10-15 "知识的诅咒":一旦我们知道某样东西,我们就会发现很难想象不知道它的时候会是什么样子. 一.概述 leetcode中的股票相关的题目如下: 打开看很容易就知道 ...
- 【C语言刷LeetCode】2126. 摧毁小行星(M)
[ 给你一个整数 mass ,它表示一颗行星的初始质量.再给你一个整数数组 asteroids ,其中 asteroids[i] 是第 i 颗小行星的质量. 你可以按 任意顺序 重新安排小行星的顺序, ...
- 【C语言刷LeetCode】235. 二叉搜索树的最近公共祖先(E)
[ 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...
- 从零开始刷Leetcode——数组(697.717.724)
文章目录 697. 数组的度 717. 1比特与2比特字符 724. 寻找数组的中心索引 697. 数组的度 给定一个非空且只包含非负数的整数数组 nums, 数组的度的定义是指数组里任一元素出现频数 ...
- sv队列和动态数组的区别_Go 刷 LeetCode 系列:经典(7) 设计双端队列
设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k.insertFront():将一个元素添加到双端队列头部.如果操作成功返回 true ...
- 二叉搜索树的中序遍历为 递增序列_Go 刷 Leetcode 系列:恢复二叉搜索树
二叉搜索树中的两个节点被错误地交换. 请在不改变其结构的情况下,恢复这棵树. 示例 1: 输入: [1,3,null,null,2] 1 / 3 \ 2输出: [3,1,null,null,2] 3 ...
- 教练我想学python_教练,我想学Python:(3)列表和切片,边学习边刷leetcode,三,与,边学边,LeetCode...
系列 序:对Python一无所知的作者竟然开了这个系列- 学Python的第三天,Emmmm-我跳了,竟然在LeetCode中开始用Python3-学Python的一个私心当然是刷LeetCode舒服 ...
最新文章
- (转)使用Spring配置文件实现事务管理
- 如何利用PN结来测量温度?
- Android .so .aar..jar文件的使用方式
- future java 原理_Java线程池FutureTask实现原理详解
- CodeForces - 1325F Ehabs Last Theorem(dfs树找最大环)
- wbepack中output.filename和output.chunkFilename
- vi @-function
- 16 岁赚到 20 万美元,我的编程之路始于对代码的热爱
- 五、Mysql中JSON类型
- 「业务架构」商业模式画布
- FPGA实验2:ADDA测试
- [转]用Excel制作甘特图并管理项目
- 离散数学中求合取范式析取范式
- 随意创作立秋logo图
- MySQL---数据库基础入门
- 洛谷 P4379 [USACO18OPEN]Lemonade Line
- 自动化测试之单元测试框架
- SP3232串口上电瞬间发乱码问题
- 如何使用ANT在命令行进行编译和测试
- html收藏的链接,浏览器收藏夹中收藏的网页链接怎么导出来?
热门文章
- keil建立stm32工程即标准库函数目录结构
- Android Graphics Tests 程序学习01
- 计算机研究与发展 杂志,计算机研究与发展杂志
- 龙王传说古月_龙王传说最新话:真虐!古月疏远唐舞麟,却又忍不住偷瞄他
- 计算机考研考线代嘛,计算机考研大纲
- 手机怎么在日历上设置每月19号提醒?
- CN_以太网规格和传输介质@双绞线@基带同轴电缆
- Android读取手机ROM总大小方法
- 初学python选择哪个软件_初学 Python 需要安装哪些软件?
- Pycharm报错:\Scripts\activate.ps1 cannot be loaded because running scripts is disabled on this system