第三题: public static int findUniqSquare(int[] nums) { int l = 0; int r = nums.length - 1; int cnt = 0; while (l <= r) { int left = nums[l] * nums[l]; int right = nums[r] * nums[r]; if (left == right) { cnt ++; while (++l <= r && nums[l] == nums[l - 1]); while (--r >= l && nums[r] == nums[r + 1]); } else { if (left < right) { cnt ++; while (--r > l && nums[r] == nums[r + 1]); } else { cnt ++; while (++l < r && nums[l] == nums[l - 1]); } } } return cnt; }