演算法 將數字變成 0 的操作次數

2021-10-24 22:03:09 字數 832 閱讀 9143

給你乙個非負整數 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 。

演算法一:按題步驟直接實現

int

numberofsteps1

(int

* arr,

int num)

else

}return count;

}

演算法二:全部使用位運算子

int

numberofsteps2

(int num)

return count;

}

將數字變成 0 的操作次數 php

給你乙個非負整數 num 請你返回將它變成 0 所需要的步數。如果當前數字是偶數,你需要把它除以 2 否則,減去 1 輸入 num 14 輸出 6 解釋 步驟 1 14 是偶數,除以 2 得到 7 步驟 2 7 是奇數,減 1 得到 6 步驟 3 6 是偶數,除以 2 得到 3 步驟 4 3 是奇數...

將陣列的數字複製並將負數改變成正數(彙編)

將10個數 有正數,有負數 全部轉換成正數指令 含義lea bx,x lea取x有效的位址給bx mov bx,offset x 將x的位址給bx,相當於lea bx,x,和第一條指令等價 or al,al al 與 al jns判斷不是不是負數 jnz判斷不是0 data segment x db...

演算法 出現次數超過一半的數字

題目 陣列中有乙個數字出現的次數超過了陣列長度的一半,找出這個數字。考慮到這個問題本身的特殊性,我們可以在遍歷陣列的時候儲存兩個值 乙個candidate,用來儲存陣列中遍歷到的某個數字 乙個ntimes,表示當前數字的出現次數,其中,ntimes初始化為1。當我們遍歷到陣列中下乙個數字的時候 舉個...