首页 > 其他分享 >将数字变成 0 的操作次数

将数字变成 0 的操作次数

时间:2023-07-07 17:16:04浏览次数:27  
标签:数字 奇数 步骤 除以 ret 偶数 次数 num 变成

题目描述

  • 题目:
    1342. 将数字变成 0 的操作次数

  • 描述:
    给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。

  • 示例1:

    输入:num = 14
    输出:6
    解释:
    步骤 1) 14 是偶数,除以 2 得到 7 。
    步骤 2) 7 是奇数,减 1 得到 6 。
    步骤 3) 6 是偶数,除以 2 得到 3 。
    步骤 4) 3 是奇数,减 1 得到 2 。
    步骤 5) 2 是偶数,除以 2 得到 1 。
    步骤 6) 1 是奇数,减 1 得到 0 。
    
  • 示例2:

    输入:num = 8
    输出:4
    解释:
    步骤 1) 8 是偶数,除以 2 得到 4 。
    步骤 2) 4 是偶数,除以 2 得到 2 。
    步骤 3) 2 是偶数,除以 2 得到 1 。
    步骤 4) 1 是奇数,减 1 得到 0 。
    
  • 示例3:

    输入:num = 123
    输出:12
    

题解

首先,很坦白的讲。看到这个问题我就想先找出数值与结果的规律,很遗憾的是没找着。所以直接看了评论以及官方题解。

先贴下官方题解:

  • 思路与算法
    将 num 与 1 进行 位运算 来判断 num 的奇偶性。
    记录操作次数时:

    • 如果 num 是奇数,我们需要加上一次减 1 的操作。
    • 如果 num > 1,我们需要加上一次除以 2 的操作。
      然后使 num 的值变成 [num/2] 重复以上操作直到 num=0 时结束操作。
  • 代码

    var numberOfSteps = function(num) {
    	let ret = 0;
    	while (num > 0) {
    		ret += (num > 1 ? 1 : 0) + (num & 0x01);
    		num >>= 1;
    	}
    	return ret;
    };
    

    这里再贴一个评论区的评论 方便理解以上代码:
    image

但很遗憾的是 这里面所提到的 位运算 以及 num & 0x01 属于我的知识盲区 ~

所以不妨仍使用上面的解题思路 但是放弃位运算这些,就按照正常计算计数。
我的解题方式:

  • 代码:
    var numberOfSteps = function (num) {
    	let ret = 0;
    	while (num > 0) {
    		if ((num % 2) === 0) {
    			num = num / 2
    			ret++
    		} else {
    			num = num - 1
    			ret++
    		}
    	}
    	return ret;
    };
    

标签:数字,奇数,步骤,除以,ret,偶数,次数,num,变成
From: https://www.cnblogs.com/zhazhaya/p/17534579.html

相关文章

  • 简单猜数字游戏设计
    下面是游戏设计要求:游戏随机选择一个100以内的自然数,然后让玩家猜出这个数字。每轮告诉玩家他猜数字高了还是低了,直到猜出数字为止。代码实现通过上述游戏要求,我们来探索如何将上述要求转换为代码。初始设置包含一个游戏标题,一个用于输入内容输入框,一个提交按钮,以及一个提......
  • 数字多功能校准仪TD1870多功能校准系统
    应用场景:由交直流电压(DCV/ACV)、交直流电流(DCI/ACI)独立输出且相位可调组成的虚功率标准源,适用于校准交直流功率表。适用于校准0.1级及以下的直流功率表、0.2级及以下的有功功率表、无功功率表、视在功率表、工频相位表和功率因数表。可选直流小信号测量的功能,支持最......
  • 数字码头APP系统开发之会员模块功能分析
    关于会员体系的详细介绍,数字码头卷轴模式系统开发过程也是一个软件工程从立项设计到实现版本上线的过程,整体的生命流程内容包含方案设计,方案评审,原型设计,UI设计,前后端程序开发,程序测试,上线应用市场,后端维护,升级迭代。在李铁牛看来,软件系统开发设计是一个讲产品设计,讲逻辑构建,讲软件......
  • 27.数字千位分隔符
     1.方式一步骤一:创建文件:src/utils/numberToCurrency.jsexportfunctionnumberToCurrencyNo(value){if(!value)return0//获取整数部分constintPart=Math.trunc(value)//整数部分处理,增加,constintPartFormat=intPart.toString().replace(/(d)(?......
  • 构建数字化警务移动平台所面临的难题与技术应对方案
    当谈及数字警务时,它被认为是一种较为创新的新型警务模式,由于其本身的便捷性以及来自社会的广泛认可,逐渐得到公安机关的高度关注和广泛应用。与传统警务相比,数字警务不仅是简单的技术升级,更重要的是通过技术创新和工作模式的创新来全面提升警务工作的效率和质量,实现警务工作的全面......
  • 如何实现Python中打印数字正方形的具体操作步骤
    Python中打印数字正方形的实现简介在Python中,我们可以使用循环语句和字符串格式化来实现打印数字正方形。本文将指导你一步一步实现这个过程。步骤下面是实现打印数字正方形的步骤:步骤描述1提示用户输入正方形的边长2使用循环打印每一行的数字3在每一行中,使......
  • L1-007 念数字
     #include<stdio.h>#include<string.h>intmain(){chara[10][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};//用字符型数组和数......
  • AI数字人(虚拟人)讨论总结
    AI数字人类型和应用场景?1.二维/三维虚拟人:用于游戏、IP品牌(柳夜熙)、内容创作(http://AI.talk)等。2.真人形象数字人:用于直播卖货,营销/投流广告视频录制(Heygen)、语言学习(CallAnnie)等等。AI数字人的价值是什么?1.代替人说话,提升表达效率和营销效率。比如真人做不到24小时直播,但......
  • 以“信”数智,筑“广”生态:亚信科技CEO高念书受邀出席中国广电数字化赋能大会
    6月30日,由国家广播电视总局指导、中国广电集团主办的中国广电数字化赋能大会在京召开。国家广播电视总局党组成员、副局长杨小伟,工信部总工程师赵志国,中国移动党组成员、副总经理高同庆等出席会议并致辞,中广电移动网络有限公司董事长宋起柱作主题报告。亚信科技执行董事兼CEO高念书......
  • 用科技智造新未来!在线开发平台强力助推数字化发展
    在科技智造新时代,科技的力量是无处不见的。运用科技可以创造美好的生活,可以实现数字化发展,帮助企业实现流程化管理。在线开发平台将科技元素注入到平台中,将科技与办公需求相连接,创造高效率办公及流程化发展。1、在线开发平台的市场价值几乎在很多行业中都希望实现降本、增效、增......