time : O(n^2), space O(1)