首页 > 编程语言 >如何使用 JavaScript 解决二进制间隙

如何使用 JavaScript 解决二进制间隙

时间:2022-09-22 11:33:34浏览次数:147  
标签:返回 间隙 二进制 JavaScript 运算符 计数 循环

如何使用 JavaScript 解决二进制间隙

在编码训练营 4 个月后,我决定开始做数据结构和算法问题,为我的技术面试做准备。

我使用的一些网站是:

  1. 可编码性
  2. 黑客等级

有什么比教别人更好地理解问题的方法。

我将使用 JavaScript 解决关于可编码性的二进制差距问题

问题

正整数 N 中的二进制间隙是在 N 的二进制表示中两端被 1 包围的连续零的任何最大序列。

例如,数字 9 具有二进制表示 1001 并包含长度为 2 的二进制间隙。数字 529 具有二进制表示 1000010001 并包含两个二进制间隙:一个长度为 4 和一个长度为 3。数字 20 具有二进制表示 10100 并包含一个长度为 1 的二进制间隙。数字 15 具有二进制表示 1111 并且没有二进制间隙。数字 32 具有二进制表示 100000 并且没有二进制间隙。

写一个函数:

函数解(N);

即,给定一个正整数 N,返回其最长二进制间隙的长度。如果 N 不包含二进制间隙,则该函数应返回 0。

例如,给定 N = 1041,函数应返回 5,因为 N 具有二进制表示 10000010001,因此其最长二进制间隙的长度为 5。给定 N = 32,函数应返回 0,因为 N 具有二进制表示“100000”,因此没有二进制间隙。

为以下假设编写一个有效的算法:

N 是 [1..2,147,483,647] 范围内的整数。

分解问题

  1. 将整数 N 转换为二进制
  2. 循环遍历二进制以计算 1 值之间的零数
  3. 返回二进制中最多的零个数
  4. 如果没有二进制间隙,则返回零

解决方案

让我们分解解决方案

声明变量 maxZeros。这是二进制间隙中零的最大计数。将其初始化为零。

循环

我们的一个限制是二进制间隙必须由 1 限制,因此我们需要一种方法来处理“零间隙必须由 1 限制”的要求。

如果整数 N 的末尾有一个零,这意味着它是一个偶数,因此使用 while 循环来检查条件,N 不等于零并且 N 是偶数。一旦满足条件,使用无符号右移位运算符在每个循环中修剪最后一位,直到条件不满足。(N 为奇数)

FOR循环

一旦整数不满足while循环条件,就跳转到for循环。

在 for 循环中,将计数初始化为零,并检查条件,N 不等于 0,然后使用无符号右移运算符将二进制移一位。检查 if 语句,如果 N 为偶数,则将计数加 1,但如果 N 为奇数,则计数重置为零。循环继续直到 N 等于 0,则不满足条件。

返回最高的零计数

使用 Math 方法,max 返回最高的零计数。声明 maxZeros 变量等于每个循环的最高零计数。

Print out of the maximum Zeros and current count on the console for every loop

当我们控制台记录 maxZeros 和 curr 时,它返回 maxZeros 作为每个循环的最高零计数。

资源

位运算符。我发现下面的视频对理解位运算符非常有帮助。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38548/22572211

标签:返回,间隙,二进制,JavaScript,运算符,计数,循环
From: https://www.cnblogs.com/amboke/p/16718605.html

相关文章

  • 有符号二进制txt导入matlab
    clc;clear;a=textread('E:/output.txt','%s');%输入txt文件m=N;%Nbitsn=length(a);%需要转换的数字个数Qin0=zeros(n,1);fori=1:nQin0(i)=bin2......
  • JavaScript 进阶
    JavaScriptJavaScript是一种运行在客户端的脚本语言。运行过程由js引擎来逐行解析并执行。用处:表单动态验证、网页特效、服务端开发(Node.js)、桌面程序(Electron)......
  • javascript的void
    void 关键字:该操作符指定要计算一个表达式但是不返回值。href="#"与href="javascript:void(0)"的区别# 包含了一个位置信息,默认的锚是#top 也就是网页的上端。而jav......
  • JavaScript JSON
    JSON是用于存储和传输数据的格式。JSON通常用于服务端向网页传递数据。JSON是一种轻量级的数据交换格式。JSON语法规则数据为键/值对。数据由逗号分隔。大括......
  • [javascript] js如何获取浏览器的语言
    当想要实现多语种时,需要获取浏览器的当前语言最直接的,就是访问浏览器内置的 navigator.language 属性:varlang=navigator.language 根据你的浏览器的设置,这段代码......
  • javascript: 复制数组时的深拷贝及浅拷贝(chrome 105.0.5195.125)
    一,js代码:<html><head><metacharset="utf-8"/><title>测试</title></head><body><buttononclick="assignCopy()">无效:变量直接赋值</button><br/><br......
  • javaScript 字符串方法,字符串搜索,
     //这是字符串 能够使用单引号或双引号    varmko='helloworedw'    varqwe="hello worasd"    //new 一个字符串   ......
  • 二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
    1.语言1.1机器语言人和人沟通的桥梁:语言人与计算机打交道-->学习计算机的语言-->什么是机器语言#我们目前主流的电子计算机!状态:0和1#最早的程序员:穿孔卡带!加......
  • 跟我学 JavaScript-VII
    跟我学JavaScript-VIIJavaScript(JS)中的While循环JavaScript系列的第-7天,今天我们将学习While循环如果您是本系列的新手,请查看上一部分—(关联)循环为什么......
  • 使用这些内置函数提升您的 JavaScript 技能!
    使用这些内置函数提升您的JavaScript技能!Pexels上的JoshHild拍摄的照片[标准内置对象-JavaScript|MDN本章记录了JavaScript的所有标准内置对象,包括它们......