首页 > 编程语言 >程序员面试金典---7

程序员面试金典---7

时间:2023-04-16 22:49:14浏览次数:45  
标签:return 金典 整数 --- 程序员 num let res 窗口

二进制转字符串

思路;

使用2成十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,依次继续。直到积中的整数部分为0,或者整数部分为1,此时0或1为二进制的最后一位。

例:

0.625=(0.101)B

0.625 * 2 = 1.25 -------取出整数部分1
0.25 * 2 = 0.5 ------- 取出整数部分0
0.5 * 2 = 1 ------- 取出整数部分1 
结束

代码:

/**
 * @param {number} num
 * @return {string}
 */
var printBin = function(num) {
    // 结果
    res = ''
    // 循环到31,题目要求
    for(let i = 0;i < 32; i++){
        num *= 2  
        // 等于1 直接返回结果
        if(num == 1) {
            return '0.' + res + '1'
        }
        // 减一,添加1
        else if(num > 1) {
            res += '1'
            num = num - 1
        }else{
            // 添加0
            res += '0'
        }
    }
    return 'ERROR' 

};

翻转数位

  1. 维护一个窗口,窗口内的0的个数<=的时候,窗口大小都可以计入结果,取长度的最大值
  2. 当窗口内的0的个数>1的时候,收缩窗口,直到满足<=1
  3. 窗口边界的取值范围为[0,31]
/**
 * @param {number} num
 * @return {number}
 */
var reverseBits = function(num) {
    // slide window
    let s = 0;
    let c = 0;
    let res = -1;
    for (let f=0; f<32; f++) {
        if ((num & (1 << f)) === 0) c += 1;
        while (c > 1) {
            if ((num & (1 << s)) === 0) c -= 1;
            s += 1;
        }
        res = Math.max(res, f-s+1);
    }
    return res;
};

标签:return,金典,整数,---,程序员,num,let,res,窗口
From: https://www.cnblogs.com/dgqp/p/17324297.html

相关文章

  • Codeforces Round 764 (Div. 3) -- E. Masha-forgetful
    **题目大意:取去模板串中的子串可以组成一个给定的目标串,每个子串可以用无数次,输出组成的所需的串的信息题目中的取得子串必须“>=2”很好的提示了我们,想到一个式子2*x+3*y可以等于任何数,所以从之前的串都取长度为2,为3。在进行匹配。**structnode{ intl,......
  • SpringMVC-JSR303和拦截器
    1.JSR3031.1.什么是JSR303JSR是JavaSpecificationRequests的缩写,意思是Java规范提案。是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。JSR-303是JAVAEE6......
  • C语言中,取反运算符~a=-(a+1)的原因
    1、因为计算机直接拿读取到的数据去运算付出的代价是最小的,所以计算机存储的数据的形式应该满足读取后不必经过任何加工就能直接用来运算由于原码不经加工无法实现(+a)+(-a)=0,所以不满足该要求,为了满足(+a)+(-a)=0的要求,人们设计出了补码来满足该要求因而计算机中存储数据的形式......
  • 基于LS-SVM的数据分类matlab仿真测试
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要        LSSVM(LeastSquareSVM)是将Kernel应用到ridgeregression中的一种方法,它通过将所有样本用最小二乘误差进行拟合(这个拟合是在kernel变换过的高维空间),但是LSSVM的缺陷是计算复杂度大......
  • CentOS7---Nginx安装并配置虚拟主机
    1、源码安装nginx,并提供服务脚本源码包的获取:官网下载实验环境:和企业环境类似,关闭防火墙,禁用selinux,使用静态IP地址安装步骤:步骤一:安装Nginx所需的pcre库[root@node01~]#yuminstallpcre-devel-y步骤二:安装依赖包[root@node01~]#yum-yinstallgcgccgcc-c++zlib......
  • 第 12 章Linux 实操篇-网络配置
    第12章Linux实操篇-网络配置目录第12章Linux实操篇-网络配置13.1Linux网络配置原理图13.1.1画出原理图,帮助理解13.2查看网络IP和网关13.2.1查看虚拟网络编辑器和修改IP地址13.2.2查看网关13.3查看windows环境的中VMnet8网络配置(ipconfig指令)13.4查看lin......
  • LeetCode-Top100: 有效的括号 (python)
     给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 示例1:输入:s="()"输出:true示例 2:输入:s="()[]{}"输......
  • 深入理解 JVM --- Class 类文件结构
    各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(ByteCode)是构成平台无关性的基石。时至今日,商业企业和开源机构已经在Java语言之外发展出一大批运行在Java虚拟机之上的语言,如Kotlin、Clojure、Groovy、JRuby、JPython、Scala等。实现语言无关性的基......
  • 【JS】- 排序浅记(sort)
    字母或数字,默认排序顺序为按字母升序 和array.reverse()配合可以实现倒序array.sort()在对象数据中,使用函数进行规则配置vararray=[{num:4},{num:2},{num:3}];//从小到大array.sort((a,b)=>a.num-b.num);输出:[{"num":2},{"num":3},{"num":4}]......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之004 week01 02-04 使用泛型实现线性
    1、算法描述在数组中逐个查找元素,即遍历。2、上一篇文的实现结果在扎实打牢数据结构算法根基,从此不怕算法面试系列之003week0102-03代码实现线性查找法中,我们实现了如下代码:packagecom.mosesmin.datastructure.week01.chap02;/***@Misson&Goal代码以交朋友、传福音......