1342. 将数字变成 0 的操作次数

滚蛋吧,2021

  • 初级模拟 无任何技巧
  • 三叶大神的精简版

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

1342. 将数字变成 0 的操作次数_第1张图片


初级模拟 无任何技巧

1342. 将数字变成 0 的操作次数_第2张图片

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

三叶大神的精简版

算法也就图一乐,真题姐还得看三叶

原文链接:https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero/solution/gong-shui-san-xie-note-bie-pian-yi-ti-sh-85fb/
1342. 将数字变成 0 的操作次数_第3张图片

class Solution {
    public int numberOfSteps(int num) {
        int ans = 0;
        while (num != 0 && ++ans >= 0) num = num % 2 == 0 ? num / 2 : num - 1;
        return ans;
    }
}


# 注释解释版
class Solution {
    public int numberOfSteps(int num) {
        int ans = 0;	//计数
        while (num != 0 && ++ans >= 0){
			num = [   num % 2 == 0 ? num / 2 : num - 1   ]   ;   
			# num=中括号一堆
			# 三元运算符ABC,通过条件A,执行B,反之C			     
        } 
        return ans;
    }
}

你可能感兴趣的:(LeetCode,leetcode,算法,职场和发展)