Skip to content

Instantly share code, notes, and snippets.

@guilleasz
Created December 4, 2017 13:26
Show Gist options
  • Save guilleasz/928e9193b6512b64d51e09b1c6e9dbda to your computer and use it in GitHub Desktop.
Save guilleasz/928e9193b6512b64d51e09b1c6e9dbda to your computer and use it in GitHub Desktop.

Optimización

¿Qué es Optimización?

  • Que algo sea mejor
  • Más rápido
  • Menos espacio
  • Menos lineas de código

Mas Rápido

  • El tiempo de ejecución
  • Big O
  • Podemos hacer pequeñas modificaciones que no cambien el Big O pero si lo hagan más rápido
  • Muchas veces mejorar el tiempo significa complicar nuestro código

Menos Espacio

  • Usar menos recursos de la computadora
  • Big O pero de espacio
  • También aplican las cosas de arriba

¿Qué tenemos que optimizar?

  • Siempre depende del objetivo en su uso
  • Que trabajo se repite más
  • ENTREVISTAS: Escuchar la consigna
    • SIEMPRE HACER PREGUNTAS

EJEMPLOS

const arr = [5,3,7,1,9];
const num = 16;

function arraySum(arr, num) {
  for (let i = 0; i < arr.length; i++) {
    for (let j =  i + 1; j < arr.length; j++) {
      if (arr[i] + arr[j] === num) return true;
    }
  }
  return false;
}

// Tiempo: O(n^2)
// Espacio: O(1)

function arraySum(arr, num) {
  arr.sort((a, b) => a - b);
  let start = 0;
  let end = arr.length - 1;
  while(start < end) {
    const sum = arr[start] + arr[end]
    if ( sum === num) return true;
    if ( sum < num ) start++
    else if (sum > num) end--
  } 
  return false;
}



// Tiempo: O(n^2)
// Espacio O(1)

// Repito 
// Tiempo: O(n)
5 3 7 1 9
16
function sumArray(arr, num) {
  const memo = {}
  for (let i = 0; i < arr.length; i += 1) {
    if (memo[num - arr[i]]) return true; 
    memo[arr[i]] = true;
  }
  return false;
}

// Tiempo: O(n)
// Espacio: O(n)
function fibonacci(n) {
  if (n === 0 || n === 1) return n;
  return fibonacci(n - 1) + fibonacci(n - 2);
}

// Tiempo: O(2^n)
// Espacio: O(n)


function fibonacci(n, memo = {}) {
  if (n === 0 || n === 1) return n;
  if (memo[n]) return memo[n];
  const resultado = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
  memo[n] = resultado;
  return resultado;
}

// Tiempo: O(n)
// Espacio: O(n)
fibonacci(1476)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment