This paper presents a new maximum likelihood (ML) symbol detection algorithm for multiple-input multiple-output (MIMO) systems. To achieve the ML performance with low complexity, we search the integer points corresponding to symbol vectors in increasing order of the distance from the unconstrained least-squares solution. For each integer point, we test if it is the ML solution, and continue the integer point search until one of searched points is determined to be the ML solution. We present an efficient iterative search strategy, which is based on the shortest path algorithm for a graph. The simulation results show that the proposed algorithm has the lower complexity compared to the sphere decoding for channel matrices having low condition numbers. For further complexity reduction, we propose to use scaling, lattice-reduction, and regularization techniques. By applying these techniques, the computational complexity of proposed algorithm is reduced significantly when the channel matrix has a high condition number.