参考了blog的做法，O(n^2)