We propose a method for rank k approximation to a given input matrix X∈Rd×n which runs in time O~(d⋅min{n+sr~(X)Gk,p+1−2,n3/4sr~(X)1/4Gk,p+1−1/2}⋅poly(p)), where p>k, sr~(X) is related to stable rank of X, and Gk,p+1=σkσk−σp is the multiplicative gap between the k-th and the (p+1)-th singular values of X. In particular, this yields a linear time algorithm if the gap is at least 1/n and k,p,sr~(X) are constants.