LeetCode算法题-1-bit and 2-bit Characters(Java实现)

COMSOL仿真光子晶体板例外点(EP):建模、扫参与验证全流程 光子晶体板的能带计算通常关注实部频率,但模式虚部承载着辐射损耗与增益信息。在非厄米光学与拓扑光子学中,例外点(Exceptional Point, EP)是本征值和本征矢同时简并的奇点,能够显著增强传感灵敏度、调控激光模式,并产生拓扑模式交换。理解EP需要从复频率曲面出发,借助PT对称结构中增益与损耗的平衡,找到频率分裂消失的临界参数。COMSOL波动光学模块为这类研究提供了可行路径:通过构建周期单胞、引入复折射率、设置Floquet边界和PML,再结合参数化扫描与模式追踪,可以在复频率图上定位EP并验证其 阅读详情

这是悦乐书的第302次更新,第321篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第170题(顺位题号是717)。有两个特殊字符,第一个字符可以用一个比特0表示,第二个字符可以用两个比特(10或11)表示。现在给出一个由比特位组成的数组,判断其最后一个字符是否是一位字符。数组的最后一位始终是比特0。例如:

输入:bits = [1,0,0]

输出:true

说明:解码它的唯一方法是两位字符和一位字符,所以最后一个字符是一位字符。


输入:bits = [1,1,1,0]

输出:false

说明:解码它的唯一方法是两位字符和两位字符,所以最后一个字符不是一位字符。


注意:

  • 数组长度范围为[1,1000]。

  • bits[i]始终为0或1。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

为了满足最后一位是0,前面的n-1位必须完成匹配,即前面的n-1位能够按照一位、两位合理组成。所以,我们直接使用循环,计算前面n-1位完成组合的长度,判断其是否等于n-1。因为有两种情况,遇到0的时候,一位就行,遇到1的时候,只能是两位。使用一个变量,从0开始往后累加,遇到0就加1,遇到1就加2,最后判断其是否等于n-1。

public boolean isOneBitharacter(int[] bits) {
    int len = bits.length, index = 0;
    while (index < len-1) {
       if (bits[index] == 0) {
            index++;
        } else {
            index += 2;
        } 
    }
    return index == len-1;
}

03 第二种解法

对于第一种解法,我们还可以再优化下,在循环中去掉if判断,直接加上当前元素,因为后面带了加1,遇到0还是加1,遇到1,就变成加2了,和原来的思路一样。

public boolean isOneBitharacter2(int[] bits) {
    int len = bits.length, index = 0;
    while (index < len-1) {
        index += bits[index] + 1;
    }
    return index == len-1;
}

04 第三种解法

我们也可以从后往前推导。因为数组最后一个数字始终是0,在遇到倒数第二个0时,这中间1的个数只能是偶数个或者0个。如果中间1的个数是0个,即数组最后两个元素都是0,不管其前面是1还是0,都满足条件。其二,如果中间1的个数是奇数个,并且是连着的,就不满足题目的设定了。

public boolean isOneBitharacter3(int[] bits) {
    int len = bits.length;
    int count = 0;
    for (int i = len - 2; i >= 0; i--) {
        if (bits[i] == 1) {
            count++;
        } else {
            break;
        }
    }
    return count%2 == 0;
}

05 小结

算法专题目前已日更超过五个月,算法题文章170+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01 当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。 阅读详情

相关推荐

解读Autoware.Universe规划模块:Behavior Path Planner

Behavior Path Planner是一个基于行为生成不同形态路径的路径规划器,负责生成 基于交通状况的路径(path), 车辆可以移动的可行驶区域(drivable area)(在路径消息中定义), 将被发送到车辆接口的转向信号(turn signal) 命令。

策 5493

【计算机系统结构】指令级并行

赶在最后一天再更一点吧,生死时速 文章目录指令级并行概念基本块BB相关与冲突⭐数据相关名相关控制相关循环展开概念注意点:限制动态分支预测采用分支历史表BHTCorrelated Branch PredictionTournament(竞赛) Predictors采用目标缓冲器Branch Target Buffers (BTB)小结动态调度记分牌算法Tomasulo算法前瞻执行Speculation关键思想:reorder buffer (ROB) 再定序缓冲Tomasulo with ReOrder..

苏幕遮的碧云天黄叶地秋色连波波上寒烟翠 785

C# 实现鼠标轨迹录制与回放自动化功能(附源码)

通过本文的介绍,相信大家已经掌握了鼠标轨迹录制与回放功能的实现方式。该功能在自动化测试和重复性工作中具有重要应用价值。后续可以进一步优化,增加更多扩展功能,形成一个完整的自动化工具。

weixin_72139050的博客 1756

717. 1-bit and 2-bit Characters

原题 题目描述:有两个特殊字符,第一个字符可以用一位表示0。第二个字符可以用两位(10或11)表示。现在给出一个由几位表示的字符串。返回最后一个字符是否必须是一位字符。给定的字符串将始终以零结尾 思路:从左到右遍历,遇到0下标增1,遇到2下标增2,然后判断最后下标若为n-1则返回true bool isOneBitCharacter(int* bits, int bitsSize) {...

没有对象也没有new方法的大白 222

STA 静态时序分析 第三章——标准单元库中的高级功耗建模与优化策略

本文深入探讨了STA静态时序分析中标准单元库的高级功耗建模与优化策略。详细解析了动态功耗和漏电功耗的精细建模技术,包括基于波形敏感的CCS模型和温度敏感的漏电模型,并介绍了多工艺角功耗建模及低功耗设计优化策略,为纳米级芯片设计提供关键能效解决方案。

weixin_29290863的博客 224

深入剖析一个卷积块(ConvBlock)

深入剖析一个卷积块(ConvBlock)

qq_45670407的博客 1926

java大数据面试算法题

针对海量数据的处理,可以使用的方法非常多,常见的方法有Hash法、Bit-map(位图)法、Bloom filter法、数据库优化发、倒排索引法、外排序法、Trie树、堆、双层桶法以及MapReduce法等。其中Hash法、Bit-map(位图)法、Trie树、堆等方法的考查 频率最高、使用范围最为广泛。 1.如何从大量的url中找出相同的url 题目:给定a、b两个文件,各存放50亿个url...

zoe_ranxiaosu的博客 882

生成式引擎优化(GEO)- 搜索引擎优化

生成式引擎优化(GEO)是针对AI内容生成平台(如ChatGPT)的新型优化策略,旨在提升品牌内容在AI生成答案中的引用率,与传统SEO存在显著差异。GEO通过优化内容权威性、结构化和语义关联,适应AI的RAG技术架构,采用3C原则(可爬性、网络共识、反馈校正)提升内容可见性。其核心区别在于目标(引用率vs排名)、技术(语义优化vs关键词)及算法透明度(封闭vs开放)。适用场景包括商业决策、行业权威建设及公共知识服务,帮助品牌在AI时代占据信息主导权。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 1407

java and运算_java – 带有符号字节的按位AND运算

这是代码:int i = 200;byte b = (byte) 200;System.out.println(b);System.out.println((short) (b));System.out.println((b & 0xff));System.out.println((short) (b & 0xff));这是输出:-56-56200200按位AND与0xff不应该改...

weixin_42417004的博客 480

Python 控制 Keysight N9010B/N9020/N9030 频谱仪

为什么要实现频谱仪的控制呢?起因是因为我司RF的同事们需要对通信模块进行GSM的带内杂散进行测试,由于该测试的频点涉及900多个,所以急需开发一款自动化测试工具。该工具需同时实现对无线通讯仪和频谱仪的控制,这篇文章主要介绍一下频谱仪的控制!做通信的应该对频谱仪都不陌生,不过我之前做的都是软件相关行业,所以我对频谱仪其实还是很陌生的;不过好在我的同时们都很热心,加上仪器的文档,一段时间下来,也算是熟悉了一些。

xgh1951的博客 1万+

倍福--实现TCP/IP的配置

控制器为CX5120,需要和上位机做通信,选择TCP/IP的通讯方式,本文介绍TCP/IP通信的操作步骤。 目 录 软硬件版本 3 1.1. 倍福Beckhoff 3 1.1.1. 控制器硬件 3 1.1.2. 控制软件 3 1.2. 串口调试助手 3 1.2.1. TCP调试通信助手 3 授权文件 3 2.1 Lib文件 3 2.2. CAB文件 4 PLC程序编写 4 3.1. 引入TCP/IP库文件 4 3.2. Client端程序 5 3.2.1. 建立相关变量 5 3.3.2. 编写连接功能块

weixin_41883890的博客 5730

LeetCode解题报告—— 1-bit and 2-bit Characters & 132 Pattern & 3Sum

1.1-bit and 2-bit Characters We have two special characters. The first character can be represented by one bit0. The second character can be represented by two bits (10or11). Now given a ...

dbvz4901的博客 126

学Simulink——基于Simulink的超前-滞后校正控制器设计与仿真建模示例

本文完成了基于 Simulink 的超前-滞后校正控制器设计与仿真,实现了:✅掌握超前与滞后校正的物理意义与设计流程✅分步设计复合控制器,兼顾动态与稳态✅在 Simulink 中搭建闭环系统并验证卓越性能✅达成高稳定裕度、高精度、快速响应三大目标。

xiaoheshang_123的博客 81

【LeetCode】717. 1比特与2比特字符 1-bit and 2-bit Characters

有两种特殊字符: - 第一种字符可以用一个比特0来表示 - 第二种字符可以用两个比特(10或11)来表示、 给定一个以 0 结尾的二进制数组bits,如果最后一个字符必须是一位字符,则返回 true 。

负雪明烛 1928

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LeetCode刷题记录1——717. 1-bit and 2-bit Characters(easy)

LeetCode刷题记录1——717. 1-bit and 2-bit Characters(easy) LeetCode刷题记录1——717. 1-bit and 2-bit Characters(easy) 前言 题目 语言 思路 后记 前言 从今天开始坚持练习LeetCode上的习题,计划是先做easy,然后逐渐难度和量加大(毕竟代码能力不算出众,一口吃不了胖子),希望自己...

Jmuyjl 473

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LeetCode717. 1-bit and 2-bit Characters 解题

废话不多说,先来看题目看一下题目We have two special characters. The first character can be represented by one bit 0.

GhostLWB的博客 1604

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LeetCode 717. 1比特与2比特字符(1-bit and 2-bit Characters)

717. 1比特与2比特字符 LeetCode717. 1-bit and 2-bit Characters 题目描述 有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。 现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。 示例 1: 输入: bits = [1, 0, 0] 输出: True 解释: 唯...

weixin_30947043的博客 97

leetcode 717 1-bit and 2-bit Characters

Java class Solution { public boolean isOneBitCharacter(int[] bits) { int len=bits.length,i=0; while(i<len-1){ if(bits[i]==0) i++; else i+=2; }

MRxjh的博客 281

LeetCode717. 1比特与2比特字符

相关信息: LeetCode链接: https://leetcode-cn.com/problems/1-bit-and-2-bit-characters/ 代码: //作者:LeetCode-Solution public boolean isOneBitCharacter(int[] bits) { int n = bits.length, i = 0; //Judge whether there is an element combined with 0 before

NorburyL 662

leetcode717-1-bit and 2-bit Characters

遍历数组,如果当前元素是0则游标加1,如果当前元素是1则游标加2(因为无论是10还是11都是合法字符),一直到游标到达倒数第二个元素。最终只要判断游标和数组的长度减1是否一样就可以了,如果刚好一致则说明倒数第二个元素是0,且题目中说明最后一个元素一定是0;如果不一致则说明倒数第二个元素是1,那么它和最后一个元素一定是组成10的,这样的话最后一个字符就不是一比特字符了。给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true。所以最后一个字符是一比特字符。

我的程序人生 372

LeetCode-1-bit and 2-bit Characters

LeetCode Java 1-bit and 2-bit Characters

坟头草一米七五 192

【LeetCode】717. 1-bit and 2-bit Characters(一位数和两位数)

【LeetCode】717. 1-bit and 2-bit Characters(一位数和两位数)题目链接:https://leetcode.com/problems/1-bit-and-2-bit-characters/description/难度:Easy题目描述:We have two special characters. The first character can be repre...

Mr.王同学 330

(java)leetcode717 1比特与2比特字符 即根据不同的长度对字符进行解码(1-bit and 2-bit Characters)

题目描述: 有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。 现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。 示例1: 输入: bits = [1, 0, 0] 输出: True 解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。 示例2: 输...

XTAOTWO的博客 619

leetcode 1比特与2比特字符

1.暴力法 首先可以确定最后一个字符只能为0,否则直接返回false 当最后一个字符为0时,从前往后遍历,bits[i]=1时,只能和其后的字符搭配,直接跳过一步,即i=i+2; 出现0时,则继续后移,即i=i+1 当i==n-1且bits[i]==0,返回true 代码如下: class Solution { public: bool isOneBitCharacter...

天启的博客 233

【力扣日记】717 1比特与2比特字符

题目描述 有两种特殊字符。第一种字符可以用一比特0来表示。第二种字符可以用两比特(10 或 11)来表示。 现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。 算法思路 从前往后 遍历数组,在遇到0进一位,遇到1进两位,到达最后一位时判断是否等于0,到不了最后一位,即输出False class Solution: def isOneBitCh...

Heart_for_Ling的博客 358
上一篇: LeetCode算法题-To Lower Case(Java实现)
下一篇: LeetCode算法题-Longest Word in Dictionary(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值