(C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #717 1比特与2比特字符

LeetCode刷题进阶:从算法实战到月薪1w的职业跃迁 else:high = mid这类变体常见于LeetCode题目如“搜索插入位置”、“在排序数组中查找元素的第一个和最后一个位置”。应用场景包括:- 查找峰值元素(162题)- 在旋转有序数组中查找目标值(33题)- 求解最小满足条件的值(二分答案法) 阅读详情

在这里插入图片描述
第四道题 #717 1比特与2比特字符
有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。
现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。
示例 1:
输入:
bits = [1, 0, 0]
输出: True
解释:
唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。
示例 2:
输入:
bits = [1, 1, 1, 0]
输出: False
解释:
唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。
注意:
1 <= len(bits) <= 1000.
bits[i] 总是0 或 1.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1、简单解法 时间复杂度:O(n)。空间复杂度:O(1)。
对bits 数组从左到右扫描来判断最后一位是否为一比特字符(扫描到数组的倒数第二位即可,因为要通过最后的i的值来判断结果)。当扫描到第 i位时,如果 bits[i]=1,那么说明这是一个两比特字符,将 i 的值增加 2。如果bits[i]=0,那么说明这是一个一比特字符,将 i的值增加 1。如果 i最终落在了bits_size−1 的位置,那么说明最后一位一定是一比特字符。

class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) {
        int bits_size = bits.size();
        int i = 0;
        for(i = 0; i < bits_size-1; i++){
            if(bits[i]==1)
            i++;
        } 
        return i==bits_size-1;
    }
};

2、贪心算法 时间复杂度:O(n)。空间复杂度:O(1)。
所有 0 都表示一个字符的结束位置(无论其为一比特还是两比特)。因此最后一位是否为一比特字符,只和他左侧出现的连续的 1 的个数(即它与倒数第二个 0 出现的位置之间的 1 的个数,如果bits 数组中只有 1 个 0,那么就是整个数组的长度减一)有关。如果 1 的个数为偶数个,那么最后一位是一比特字符,如果 1 的个数为奇数个,那么最后一位不是一比特字符。

class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) {
         
        int i = bits.size()-2;
        while( i >=0 && bits[i] > 0  )   i--;
        //注意此处进行判断时应该先判断i>=0,否则当数组只有最后一个零始,i的最后的值为-1,而系统找不到bit[-1]的值而报错;
        return (bits.size()-i) % 2 == 0;
    }
};

【个人学习总结】CRC校验原理及实现 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 .................. 阅读详情

相关推荐

手把手教你配置MAX96712解串器:从I2C地址分配到PWM帧同步

本文详细解析了MAX96712解串器在自动驾驶视觉链路中的核心配置流程。从I2C地址分配、GMSL2数据流映射到实现多摄像头精准同步的PWM帧同步触发,手把手指导工程师构建高可靠性的图像传输系统,并提供了实用的Linux调试技巧与问题排查思路。

weixin_29297127的博客 921

刷题记录--1bit与2bit字符

文章目录题目:解法1:更新步长解法2:找寻规律贪心: 题目: 解法1:更新步长 从头遍历到尾,更新步长,设置遍历条件,把不同情况分开。 代码: class Solution { public: bool isOneBitCharacter(vector<int>& bits) { if(bits.size()<2) return true; int start = 0; //至于判断条件为什么要是

CppYyds的博客 615

Matlab之fdesign的应用说明

fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB)

嵌入式老牛的博客 1052

leetcode717

class Solution { public: bool isOneBitCharacter(vector<int>& bits) { int len = bits.size(); if (len == 1) { if (bits[0] == 0) { ...

weixin_33716941的博客 170

ROS水下仿真神器uuv_simulator:从零搭建水下机器人测试环境(附Gazebo配置全流程)

本文详细介绍了如何使用ROS和uuv_simulator从零搭建水下机器人仿真测试环境,包括Gazebo配置全流程。通过系统环境准备、水下世界构建、机器人模型定制开发等步骤,帮助开发者在虚拟海洋环境中高效验证算法,大幅降低研发成本。特别适合水下机器人研发人员参考。

ujm5678901的博客 263

NAO V6 开发环境的配置(附所有文件)

NAO V6开发环境配置前言环境Robot SettingsChoregraphe 2.8.5.10python2.7+naoqi2.8+opencv4.1.0putty与FileZilla 前言 学校的机器人摸索了一段时间,之前摸爬滚打探索环境,之前没接触这类机器人可能会非常艰辛,希望能给需要的人一些帮助。Nao与pepper通用 环境 win10(x64)+naoqi2.8 1、Robot S...

wbhhello的博客 3219

leetcode刷题--简单题1比特与2比特字符

第一题 1比特与2比特字符 有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。 现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。 示例 1: 输入: bits = [1, 0, 0] 输出: True 解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/1-bit-and-

cloudless_sky的博客 343

深度学习模型设计的方法和技巧

设计神经网络模型是一个迭代的过程,需要不断试验和调整各个组成部分,以达到最佳性能。同时,遵循良好的工程实践,如模块化设计、版本控制、文档记录等,也是成功的关键。

xw555666的博客 4027

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #14. 最长公共前缀

第四题、#14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-common-pre.

electrical_engineer0的博客 204

AI应用架构师收藏:大规模AI系统AIOps智能运维的4个落地案例

本文精选互联网、金融、制造、电信四大行业的大规模AI系统AIOps落地案例,覆盖云原生AI平台、风控AI系统、工业AI质检、5G网络AI优化等典型场景。行业背景与系统规模:业务目标、AI系统架构、运维挑战;AIOps解决方案设计:数据采集层→分析层→决策层的全栈架构,技术栈选型与理由;核心技术实现细节:异常检测算法、根因分析模型、自动化恢复流程(含Python代码示例);实施效果与经验总结:关键指标对比、踩坑教训、架构师视角的最佳实践。

AI天才研究院 853

什么是垂直同步?电脑快速消除屏幕撕裂与提升游戏性能的方法 垂直同步、游戏画面撕裂、游戏优化、VSync、FPS、FreeSync、G-Sync、显卡驱动更新、游戏画质、输入延迟

看这张动图,左边的画面出现了明显“切开”的断层现象,而右边画面非常流畅,没有撕裂。这正是「垂直同步」开关的区别。:每秒生成多少帧图像。比如 60FPS 表示一秒钟显示 60 张图片。刷新率(Refresh Rate):显示器每秒刷新几次画面,单位是赫兹(Hz)。60Hz 表示每秒刷新 60 次。参数说明FPS显卡渲染速度(逻辑帧率)刷新率显示器的显示频率(物理限制)当 FPS 高于刷新率时,显卡渲染的画面来不及被显示器显示,导致撕裂。屏幕撕裂(Screen Tearing)

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1347

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #20. 有效的括号

第三题、#20. 有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 来.

electrical_engineer0的博客 179

水文仿真软件:HEC-RAS (Hydrologic Engineering Center‘s River Analysis System)_(7).一维非稳态水力模型

自定义脚本是通过编程语言(如 Python)编写的一系列自动化任务,可以帮助用户更高效地处理数据和运行模型。编写脚本:使用 Python 或其他编程语言编写自定义脚本。集成脚本:将脚本集成到 HEC-RAS 中,实现自动化数据处理和模型运行。

kkchenjj的博客 930

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #541. 反转字符串 II

第九题、#541. 反转字符串 II 双指针反转要反转的字符 class Solution { public: string reverseStr(string s, int k) { int s_size = s.size(); for(int i= 0; i<s_size;i+=2*k){ reverse(s.begin()+i,s.begin()+min(s_size,i+k)); } retu.

electrical_engineer0的博客 139

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #557. 反转字符串中的单词 III

第七道题、#557. 反转字符串中的单词 III 给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例 1: 输入: “Let’s take LeetCode contest” 输出: “s’teL ekat edoCteeL tsetnoc” 注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-words-in-a-st.

electrical_engineer0的博客 196

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #38. 外观数列

第二题、#38. 外观数列 给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1 11 21 1211 111221 第一项是数字 1 描述前一项,这个数是 1 即 “一个 1 ”,记作 11 描述前一项,这个数是 11 即 “两个 1 ” ,记作 21 描述前一项,这个数是 21 即 “一个 2 一个 1 ” .

electrical_engineer0的博客 212

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #13. 罗马数字转整数

第一道、#13. 罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 .

electrical_engineer0的博客 204

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #415. 字符串相加

第五题、#415. 字符串相加 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-common-pre.

electrical_engineer0的博客 228

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #521. 最长特殊序列 Ⅰ

第八题、#521. 最长特殊序列 Ⅰ 给你两个字符串,请你从这两个字符串中找出最长的特殊序列。 「最长特殊序列」定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。 子序列 可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。 输入为两个字符串,输出最长特殊序列的长度。如果不存在,则返回 -1。 示例 1: 输入: “aba”, “cdc” 输出: 3 解释: 最长特殊序列可为 “aba” (或 “cdc”),两者.

electrical_engineer0的博客 192

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #657. 机器人能否返回原点

第十道题、# #657. 机器人能否返回原点 在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R(右),L(左),U(上)和 D(下)。如果机器人在完成所有动作后返回原点,则返回 true。否则,返回 false。 注意:机器人“面朝”的方向无关紧要。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的.

electrical_engineer0的博客 259

(C++)Leetcode狂刷200题——标签“字符串篇--简单难度10道 #67. 二进制求和

第六题、#67. 二进制求和 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b = “1011” 输出: “10101” 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/add-binary 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 模拟人工从低位到.

electrical_engineer0的博客 226

(C++)Leetcode狂刷200题——标签“哈希表篇--简单难度10道 #500. 键盘行

第六道、#500. 键盘行 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 输入: [“Hello”, “Alaska”, “Dad”, “Peace”] 输出: [“Alaska”, “Dad”] 注意: 你可以重复使用键盘上同一字符。 你可以假设输入的字符串将只包含字母。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/keyboard-row 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载.

electrical_engineer0的博客 197

原创 (C++)Leetcode狂刷200题——标签“哈希表篇--简单难度10道 #409. 最长回文串

第八道、 #409. 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。 在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。 注意: 假设字符串的长度不会超过 1010。 示例 1: 输入: “abccccdd” 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-palindrome 著作.

electrical_engineer0的博客 198

(C++)Leetcode狂刷200题——标签“动态规划篇--简单难度10道(两道重复) #392. 判断子序列

第七道、#392. 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 示例 1: s = “abc”, t = “ahbgdc” 返回 true. 示例 2: s = “.

electrical_engineer0的博客 283

鸽了十天的《精选力扣300+道算法题》终于出来了

作者:阿秀阿秀的校招笔记:https://interviewguide.cn大家好,我是阿秀。今天介绍一个我的专栏《精选力扣300+道算法题》,其实本应该在六月底就给大家分享出来的,但那个...

博客 670

程序员刷题平台全攻略:从LeetCode到Codeforces的选型与高效使用指南

在线判题系统(Online Judge, OJ)是程序员提升算法与数据结构能力、备战技术面试的核心工具。其原理在于通过自动化评测代码的正确性、时间与空间效率,为学习者提供即时反馈。掌握OJ的使用能有效构建算法思维,提升工程实践中的问题解决能力,是求职面试和竞赛准备的关键技术环节。在众多应用场景中,不同平台各有侧重:例如,LeetCode聚焦于**面试真题**和系统性学习路径,是求职者的首选;而Codeforces则以高频竞赛和活跃社区著称,适合追求**算法竞赛**与思维深度训练的开发者。理解各平台特点并进行

congji3817的博客 407
上一篇: (C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #26删除排序数组中的重复项”
下一篇: (C++)Leetcode狂刷200题——标签“数组篇--简单难度10道 #121. 买卖股票的最佳时机
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值