LeetCode 1342. Descripción de C / C ++ doble cien eficiencia del número de operaciones que convierte un número en 0

LeetCode 1342. Descripción de C / C ++ doble cien eficiencia del número de operaciones que convierte un número en 0

  Hola a todos, mi nombre es oficial Qi Jie (QI guān jié), poco a poco expediente del curso de aprendizaje en CSDN, las moscas de tiempo, el futuro se puede esperar, alimentando ~ dirección del blog es: el blog oficial de Qi Jie

Este artículo fue escrito originalmente por Qi Guan, por favor apóyelo ¡Algunas plataformas han estado robando artículos de blogger! ! !

Los bloggers actualmente solo escriben blogs en CSDN, la única dirección de actualización del blog es: el blog de Qi Guanjie


Titulo

Dificultad simple

Le da un número entero no negativo num, devuelva el número de pasos necesarios para convertirlo en 0. Si el número actual es par, debe dividirlo entre 2; de lo contrario, reste 1.

Ejemplo 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 。

Ejemplo 2

输入:num = 8
输出:4
解释:
步骤 1) 8 是偶数,除以 2 得到 4 。
步骤 2) 4 是偶数,除以 2 得到 2 。
步骤 3) 2 是偶数,除以 2 得到 1 。
步骤 4) 1 是奇数,减 1 得到 0 。

Ejemplo 3

输入:num = 123
输出:12

Consejos:

  • 0 <= num <= 10^6

Solución

  Danos un número y déjanos encontrar la cantidad de veces que se necesita para convertir este número en uno. La regla del cambio es: 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。entonces solo necesitamos un tiempo hasta que él sea 0, y luego encontrar el número de retornos. (Aquí puede usar el &algoritmo AND para juzgar los números pares e impares . Será más rápido que la operación de módulo. Lo escribí en otro artículo. Si está interesado, puede verificarlo. La dirección del artículo es: ¿Por qué el mismo algoritmo, pero su programa? ¿Siempre hay tiempo de espera? Consejos que debes conocer para la competencia de algoritmos )

El código de solución completo es:

class Solution {
public:
    int numberOfSteps (int num) {
        int ans = 0;
        while(num){
            ans++;
            if(num&1)
                num--;
            else
                num /= 2;
        }
        return ans;
    }
};

La eficiencia de ejecución es:

Inserte la descripción de la imagen aquí

¡La eficiencia de ejecución es el doble de cien!

201 artículos originales publicados · elogiado 1835 · 230,000 vistas +

Supongo que te gusta

Origin blog.csdn.net/qq_43422111/article/details/105670685
Recomendado
Clasificación