edición general
Diay

Diay

En menéame desde junio de 2009

4,94 Karma
756K Ranking
Enviadas
Publicadas
Comentarios
Notas

140 Preguntas que Google te puede hacer en una entrevista de trabajo. [EN] [112]

  1. #108 OUCCHHHHH!!!! jejejeje
    Pero yo lo he argumentado algo más :-P

    No veas que rayada llevamos todos con el problemita de los Coj...googles
  1. #87 Tu solución es la siguiente:

    Procedure trabajarengoogle (var a,b: array of integer ; m,i:integer);
    begin
    trabajarengoogle (a, b, m*a[i], i+1);
    b[i]:= m;
    end;

    El problema no es que la complejidad del problema no sea O(n), sino que lo que contiene cada elemento de la matriz b no es lo que pide le problema: "bi = a1*a2*...*an/ai".

    Por ejemplo, en tu propuesta, la primera posición de b tiene el valor 1, la segunda posición tiene a1, la tercera posición tiene a1 * a2, etc...
  1. #92 Podrías escribirlo de manera que funcione?
    Tal como está tu algoritmo no se detiene nunca.
  1. Con #80, #82 y #84:
    Para a={2,4,6,8,10}:
    i=1:
    trabajarengoogle (a, b, 1, 1);
    b[1] = 1
    i=2:
    trabajarengoogle (a, b, 2, 2);
    b[2] = 2
    i=3:
    trabajarengoogle (a, b, 8, 3);
    b[3] = 8
    i=4:
    trabajarengoogle (a, b, 48, 4);
    b[4] = 48
    i=5:
    trabajarengoogle (a, b, 384, 5);
    b[5] = 384
    Resultado final:
    b={1,2,8,48,384}

    Sin embargo, el resultado que debería quedar es:
    b={1920,960,640,480,384}

    ¿Estoy siguiendo bien tu función o hay algo que se me ha escapado?

    Edito: no había visto #92

    #85 Yo lo había pensado de forma similar a la tuya, pero claro, el orden de complejidad no es O(n)

    #89 Creo que descarta arrays auxiliares, pero no estoy seguro, y la verdad es sin arrays auxiliares no se me ocurre
  1. #84 Perdona, pero b(i) = a(1) * ... * a(i-1) no es lo que piden... ni para calcularlo te hace falta recursividad ninguna...
  1. #78 #80 No se si acabo de entender qué quiere decir you are allowed to use only constant space. ¿Descartaría eso Arrays auxiliares y/o funciones recursivas?
  1. #84 El tuyo tiene orden n², si no sería la solución ya que cualquier función recursiva se puede convertir en recursiva de cola, y cualquier función recursiva de cola se puede convertir en iterativa.
    (ah, el código anterior está en python, pero se lee muy mal por falta de indentación)
  1. #78 Lo he estado pensando y no veo por qué se tienen que recorrer los arrays 3 veces. Necesitas recorrer 'a' 1 vez para obtener 'c' y 'd', ¿no? Y luego recorrer 1 vez 'b' para ir asignando los resultados. ¿Hay algo que no he entendido de tu planteamiento?

    #82 Con lo que tienes puesto no haces nunca la división (o el no multiplicar el elemento 'i') que piden

    De todas formas, y corrígeme/me corrijan si me equivoco, pero usar recursividad para recorrer una lista no es muy buena idea porque consumes "mucha" memoria en cada iteración, lo cual no ocurre si lo haces con un bucle
  1. #80 Qué es 'm'?

    Por lo que veo en tu universidad también se programa en pascal/delphi, no? :-P

menéame