leetcode 1342. Number of Steps to Reduce a Number to Zero(数归为0需要几步)

本文介绍了一个简单的算法问题:如何计算将任意正整数减少到零所需的最少步骤数。如果当前数字是偶数,则将其除以2;如果是奇数,则减1。通过实际例子展示了这一过程,并提供了完整的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Given an integer num, return the number of steps to reduce it to zero.

In one step, if the current number is even, you have to divide it by 2, otherwise, you have to subtract 1 from it.

Example 1:

Input: num = 14
Output: 6
Explanation:
Step 1) 14 is even; divide by 2 and obtain 7.
Step 2) 7 is odd; subtract 1 and obtain 6.
Step 3) 6 is even; divide by 2 and obtain 3.
Step 4) 3 is odd; subtract 1 and obtain 2.
Step 5) 2 is even; divide by 2 and obtain 1.
Step 6) 1 is odd; subtract 1 and obtain 0.

给一个数字num, 问需要多少步能把它变为0,
一步是这样的:
如果是偶数,就除以2,
奇数就-1.

思路:
就按题目说的来,偶数/=2, 奇数-1, 直到num为0

public int numberOfSteps(int num) {
    int cnt = 0;
    
    while(num > 0) {
        if(num % 2 == 0) {
            num /= 2;
        } else {
            num -= 1;
        }
        cnt ++;
    }
    
    return cnt;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值