分别用两个数组去记录每个点的行坐标和列坐标,row[],col[];
对这两个数组排序,然后求数组中最大值和最小值的差,
length = sorted_row[n-1] - sorted_row[0],
width = sorted_col[n-1] - sorted_col[0];
此时得到的长和宽的乘积,是包含所有点的最小矩阵的面积,但是题目要求的是正方形面积,取两个边中的最大值求平方即可。
import java.util.Scanner; import java.util.Arrays; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ int n = scan.nextInt(); int[] col = new int[n]; int[] row = new int[n]; for(int i = 0; i < n; i++){ col[i] = scan.nextInt(); row[i] = scan.nextInt(); } Arrays.sort(col); Arrays.sort(row); int a = col[n-1] - col[0]; int b = row[n-1] - row[0]; int max = Math.max(a*a,b*b); System.out.println(max); } } }