✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Esercizio di codifica – Salire le scale – Numeri di Fibonacci – C++ – Giudice online

35

Domanda: Stai salendo le scale. Ci vogliono n passi per arrivare in cima. Ogni volta, puoi fare 1 passo o 2 passi. Quanti modi distinti per arrivare in cima?

Descrizione del problema: http://oj.leetcode.com/problems/climbing-stairs/

Questo problema può sembrare difficile all’inizio, ma quando ci pensi per un secondo, potresti trovarlo così facile. La risposta è Numeri di Fibonacci (vedi qui, qui )

Ebbene, i Numeri di Fibonacci originali sono definiti come sequenze:

Esercizio di codifica - Salire le scale - Numeri di Fibonacci - C++ - Giudice online

Per questo problema, dobbiamo solo modificare un po’:

Esercizio di codifica - Salire le scale - Numeri di Fibonacci - C++ - Giudice onlinee Esercizio di codifica - Salire le scale - Numeri di Fibonacci - C++ - Giudice onlinepoiché per 1 solo passaggio, c’è solo 1 modo distinto e per 2 passaggi, abbiamo due soluzioni: 1 + 1 o 2.

Il resto è come la serie di Fibonacci. Il Esercizio di codifica - Salire le scale - Numeri di Fibonacci - C++ - Giudice onlineperché dalla posizione attuale, siamo forse dalle due posizioni precedenti, F(n-1) e F(n-2).

Puoi usare la ricorsione, ma questo può essere risolto con una soluzione iterativa più efficace.

class Solution {
public:
    int climbStairs(int n) {
        if (n == 1) return 1;
        if (n == 2) return 2;
        // f(n) = f(n - 1) + f(n - 2)
        int a = 1, b = 2, c = a + b;
        for (int i = 3; i <= n; i ++) {
            c = a + b;
            a = b;
            b = c;
        }
        return c;
    }
};

Oppure preferisci una funzione ricorsiva più semplice:

class Solution {
public:
    int climbStairs(int n) {
        if (n == 1) return 1;
        if (n == 2) return 2;
        return climbStairs(n - 1) + climbStairs(n - 2);
    }
};

Nota: il ricorsivo produrrà TIME LIMIT EXCEEDED sul test 44. Questo perché la funzione ricorsiva di solito calcola i valori intermedi molte volte. Ad esempio, Esercizio di codifica - Salire le scale - Numeri di Fibonacci - C++ - Giudice online, Esercizio di codifica - Salire le scale - Numeri di Fibonacci - C++ - Giudice online. Esercizio di codifica - Salire le scale - Numeri di Fibonacci - C++ - Giudice online è calcolato due volte.

Fonte di registrazione: helloacm.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More