笔试题算法系列(二)百度裁剪网格纸
度度熊有一张网格纸,但是纸上有一些点过的点,每个点都在网格点上,若把网格看成一个坐标轴平行于网格线的坐标系的话,每个点可以用一对整数x,y来表示。度度熊必须沿着网格线画一个正方形,使所有点在正方形的内部或者边界。然后把这个正方形剪下来。问剪掉正方形的最小面积是多少。
输入描述:
第一行一个数n(2≤n≤1000)表示点数,接下来每行一对整数xi,yi(-1e9<=xi,yi<=1e9)表示网格上的点
输出描述:
一行输出最小面积
输入例子1:
2
0 0
0 3
输出例子1:
9
代码如下:
1 import java.util.Scanner; 2 public class Main{ 3 public static void main(String [] args){ 4 Scanner sc = new Scanner(System.in); 5 String [] line; 6 while(sc.hasNext()){ 7 line = sc.nextLine().split(" "); 8 int n = Integer.parseInt(line[0]); 9 line = sc.nextLine().split(" "); 10 int x0 = Integer.parseInt(line[0]); 11 int y0 = Integer.parseInt(line[1]); 12 int minX = x0; 13 int maxX = x0; 14 int minY = y0; 15 int maxY = y0; 16 for(int i=1; i<n; i++){ 17 line = sc.nextLine().split(" "); 18 int xi = Integer.parseInt(line[0]); 19 int yi = Integer.parseInt(line[1]); 20 minX = Math.min(minX, xi); 21 maxX = Math.max(maxX, xi); 22 minY = Math.min(minY, yi); 23 maxY = Math.max(maxY, yi); 24 } 25 int borderSize = Math.max(Math.abs(maxX-minX),Math.abs(maxY-minY)); 26 int s = borderSize*borderSize; 27 System.out.println(s); 28 } 29 sc.close(); 30 } 31 }