leetcode1342

https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero/

While循环
判断num不为0时 每次循环执行次数sum加一
判断num 为偶数则除以2 为奇数减1
一直执行到num=0 跳出循环 返回sum

class Solution {

    public int numberOfSteps (int num) {

    int count = 0;                                         //用count来统计得到0的次数

    while(num > 0){                                     //当num大于0循环继续

        if(num%2 == 0){                              / /如果对2取余为0

            num /= 2;                                      //num自初否则减减

        }else{

            num--;

        }

        count++;                            

    }

    return count;                                           //返回count的值

 

    }

}



//模拟步骤简单递归
 

class Solution {

    public int numberOfSteps (int num) {

        if (num == 0) {                            //如果num等于0直接返回

            return 0;

        }

        return 1 + numberOfSteps(num % 2 == 0 ? num / 2 : num - 1); //num 对2取余是否等于0如果是自除否则减1

 

    }

}

//n统计结合两者

 class Solution {

          public int numberOfSteps (int num) {

              int n = 0;

             while(num > 0) {

                    num = num % 2 == 0 ? num >> 1 : num - 1;      //如果对2取余等于0则向右移动一位否则减一

                      n++;

                  }

                  return n;

      }

}

//用位运算转换为2进制     二进制         遇见奇数末尾一变为0(及减一)   遇见偶数向右移一位  每次统计加一

 

class Solution {
    public int numberOfSteps (int num) {
       int count=0;
       while(num!=0) 
       {
           if(num%2==0)
        {
            num=num>>>1;
            count++;
        }
           else
        {
            num--;
            count++;
        }
       }
    return count;
    
    
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值