We present an algorithm for the c-approximate nearest neighbor problem in a d-dimensional Euclidean space, achieving query time of O(dn1/c2 +o(1) ) and space O(dn + n1+1/c2 +o(1) ). This almost matches the lower bound for hashing-based algorithm recently obtained in [27]. We also obtain a space-efficient version of the algorithm, which uses dn + n logO(1) n space, with a query time of dnO(1/c2 ) . Finally, we discuss practical variants of the algorithms that utilize fast bounded-distance decoders for the Leech Lattice.