2020-6-8
題目:
- leetcode – 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
提示:
0 <= num <= 10^6
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
個人解答:(C版本)
int numberOfSteps (int num)
{
int count=0;
while(num > 0)
{
++count;
if(num%2 == 0)
num /= 2;
else
num -= 1;
}
return count;
}
- 複雜度分析
1)時間複雜度:O(logN)。
2)空間複雜度:O(1)。
- 運行結果:
他山之石: