首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数字范围压缩为已使用或未使用的块

将数字范围压缩为已使用或未使用的块
EN

Software Engineering用户
提问于 2013-01-09 17:11:35
回答 1查看 441关注 0票数 0

给定一个数值范围和一个在该范围内的使用数字列表,我需要将范围压缩为已使用和未使用的数字块。

例如:

代码语言:javascript
运行
复制
range: 0 to 10
used:  3,4,5,9

我需要像这样的输出

代码语言:javascript
运行
复制
0-2: free
3-5: used
6-8: free
9:   used
10:  free

不知道从哪里开始,所以任何的指导都很感激。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2013-01-09 17:59:59

正如我所评论的,这与游程编码非常相似,事实上,如果对used进行排序,可能会更容易一些!

对于运行长度编码,您将从数组中的第一个数字开始,并向前扫描,计算在已使用/未使用的每个转换之间的数目(或者在您的情况下,记录开始和结束索引,这基本上是等价的)。

但是,如果对used进行了排序,您已经知道了从未使用的->used的第一个转换在哪里,这样您就可以从那里开始扫描used,以查找从used>unused的下一个转换,然后您还知道下一个未使用的->used转换为它的下一个used号。

如果没有对used进行排序,您可以先对其进行排序(与range相比,如果使用的话可能是个好主意),或者您可以使用rangeused来首先构造一个完整的已使用和未使用的数字数组,例如00011100010并对其进行编码。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/182065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档