¿Dónde puedo encontrar problemas difíciles de algoritmo / estructura de datos?

Hay un par de sitios web que publican preguntas de la entrevista junto con sus soluciones:

http://www.leetcode.com
http://xorswap.com/

También hay sitios web que albergan problemas de algoritmos utilizados para programar concursos. Estos problemas no son una pregunta real de la entrevista, sino excelentes problemas para practicar la resolución de problemas de algoritmos:

Juez en línea de la Universidad de Pekín:
http://poj.org/
Google Code Jam:
http://code.google.com/codejam/c…
TopCoder (es necesario registrarse para ver los problemas):
http://community.topcoder.com/tc…

Los sitios web enumerados anteriormente son los que he usado antes, pero hay muchos más sitios web que albergan competencias de programación y la mayoría de ellos tienen un archivo de problemas utilizados en sus partidos anteriores. Enumeraré algunos de ellos a continuación, pero no puedo garantizar su calidad (ya que nunca los he usado):

Juez en línea de Esfera:
http://www.spoj.pl/problems/clas…
Fuerzas de código:
http://codeforces.com/problemset

Este es un buen conjunto http://everything2.com/title/har

Y algunas que me gustan:

1) Se le da una matriz de n enteros de solo lectura de 1 a n. Cada número entero aparece exactamente una vez, excepto A, que aparece dos veces y B, que falta. Encuentre A y B usando menos de O (n) espacio en O (n) tiempo.

Una matriz de solo lectura de longitud n, con una dirección de 1 a n inclusive,

contiene entradas del conjunto {1, 2, …, n-1}.
Por el Principio de Dirichlet Pigeon-Hole hay uno o más duplicados
entradas. Encuentre un algoritmo de tiempo lineal que imprima un valor duplicado,
utilizando solo “espacio extra constante”. (Esta restricción de espacio es importante;
solo tenemos un número fijo de lectura / escritura utilizable
ubicaciones de memoria, cada una capaz de almacenar un número entero entre 1 y n.
El número de tales ubicaciones es constante, independiente de n.
Las entradas de la matriz original no se pueden modificar.) El algoritmo debería
ser fácilmente implementable en cualquier lenguaje de programación estándar.

a través de http://domino.research.ibm.com/C

3) Dada una secuencia de n enteros entre 1 yn, encuentre un número que se repita en tiempo lineal utilizando menos de O (n) espacio y recorriendo la secuencia secuencialmente O (1) veces.

4) ¿Cuál es la pregunta de rompecabezas más difícil que se hace en PayPal?

5) Dado un árbol donde los nodos tienen etiquetas enteras, encuentre una ruta que descienda en el árbol de manera que la suma de las etiquetas sea igual al algoritmo S. O (n). fuente: Cracking the Coding Interview ( http://www.amazon.com/dp/098478280X ).

6) Se le da una matriz de n enteros de solo lectura. Averigüe si algún número entero ocurre más de n / 3 veces en la matriz en tiempo lineal y espacio adicional constante.

7) Haga una fusión estable de dos matrices en su lugar más rápido que O (n ^ 2).

8) Construya una estructura de datos de conjunto dispersa que tome espacio O (m) para mantener m enteros en el rango 1 .. n de modo que add-member (i) y is-member (i) tomen O (1) tiempo. fuente http://research.swtch.com/sparse

9) http://gurmeet.net/puzzles/firin

10) Pruebe si dos árboles son isomorfos.

1.Geeks para geeks

Este es uno de los mejores portales informáticos para geeks, principalmente enfocado en estructuras de datos y algoritmos. El análisis de algoritmos, búsqueda y clasificación, algoritmos codiciosos, programación dinámica, búsqueda de patrones, retroceso, división y conquista y algoritmos de bits se explican claramente.

2. Top codificador

Top coder es uno de los sitios de concurso de codificación que se enfoca principalmente en preguntas algorítmicas. Aquí está la buena colección de temas algorítmicos de varios miembros del topcoder.

3. OpenclassRoom- Universidad de Stanford

Aquí está la colección de tutoriales en video del profesor Tim Roughgarden de la Universidad de Stanford. Los temas discutidos aquí son Introducción a técnicas fundamentales para diseñar y analizar algoritmos, incluido el análisis asintótico; dividir y conquistar algoritmos y recurrencias; algoritmos codiciosos; estructuras de datos; programación dinámica; algoritmos gráficos; y algoritmos aleatorios

4. Introducción a los algoritmos – Massachusetts Institute of Technology

Aquí está la colección de diapositivas de conferencias, código sobre varios temas algorítmicos por el instituto de tecnología de Massachusetts

5. Stanford CS Education Library

Esta biblioteca en línea recopila material educativo de CS de los cursos de Stanford y los distribuye de forma gratuita.

Aquí hay algunos sitios más que pueden ayudarlo a aprender estructuras de datos y algoritmos:

1. CSE 214 – Notas de clase
2. http://courses.csail.mit.edu/6.8
3. CS 61B: estructuras de datos
4. https://www.coursera.org/course/
5. Coursera
6. Preguntas de la entrevista de algoritmo
7. http://www.careercup.com/page?pi
8 LeetCode
9 preguntas más recientes sobre ‘estructuras de datos’
10. Preguntas más recientes sobre ‘algoritmos’
11 Curso de Introducción a los Algoritmos en línea
12 Manish Kumar: septiembre de 2013

Preguntas de Quora:
1. ¿Cuáles son algunos buenos recursos para aprender sobre estructuras de datos?
2. Estructuras de datos: ¿Cuál es el mejor recurso para aprender Estructura de datos y algoritmo (también debe contener tareas de práctica)?
3 ¿Cuáles son algunos de los mejores recursos para aprender estructuras de datos avanzadas como árboles de segmentos y árboles indexados binarios (árboles Fenwick)?

Grupo de Facebook: https://www.facebook.com/groups/