加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 连续位1的流长度,后跟0

发布时间:2020-12-16 09:38:16 所属栏目:百科 来源:网络整理
导读:是面试问题,所以寻找可能是非显而易见的解决方案. 说1111 … 111100000 … 000大流 找到长度(数量)为1. 你可以假设这里1是一个Set Bit. 如果1是符号,它将如何改变,比如aaa..aaaabbbb … bbbbb 我可以提出的一个解决方案是看第1位/符号,然后保持加倍间隔,然后
是面试问题,所以寻找可能是非显而易见的解决方案.

说1111 … 111100000 … 000大流

找到长度(数量)为1.

你可以假设这里1是一个Set Bit.

如果1是符号,它将如何改变,比如aaa..aaaabbbb … bbbbb

我可以提出的一个解决方案是看第1位/符号,然后保持加倍间隔,然后看第3,然后第7,依此类推.当你击中0或其他符号时,然后再次使用分而治之,向后移动到最后位置.

解决方法

如果您可以随机访问流并且已知流的长度,则可以使用O(log n)中的二进制搜索变体来执行此操作.

或者,您可以&使用0x1,如果为零,则递增计数器并右移1.或者,您可以检查整个字节(字,双字,四字等)是否为非零,以便更快地找到开始的块.无论哪种方式,那都是O(n).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读