【题目】:棋盘上有n个点,实现判定是否存在所有的点都落两条直线 x=a,y=b上,并返回a,b的值.
int[][] arrays = new int[8][8]; arrays[1][5] = 1; arrays[1][6] = 1; arrays[2][6] = 1; arrays[2][6] = 1; arrays[1][2] = 1; arrays[0][6] = 1; Map<Integer, Integer> mapX = new HashMap<>(); Map<Integer, Integer> mapY = new HashMap<>(); for (int x = 0; x < arrays.length; x++) { for (int y = 0; y < arrays.length; y++) { if (arrays[x][y] == 0) continue; if (null == mapX.get(x)) { mapX.put(x, 1); } else { mapX.put(x, mapX.get(x) + 1); } if (null == mapY.get(y)) { mapY.put(y, 1); } else { mapY.put(y, mapY.get(y) + 1); } } } boolean flag = true; int maxValueX = getMaxKey(mapX); int maxValueY = getMaxKey(mapY); for (int x = 0; x < arrays.length; x++) { for (int y = 0; y < arrays.length; y++) { if (arrays[x][y] == 0) continue; if (x != maxValueX && y != maxValueY) { flag = false; break; } } } if (flag) { System.out.println("存在"); System.out.println("x=" + maxValueX); System.out.println("y=" + maxValueY); } else { System.out.println("不存在"); } } public static int getMaxKey(Map<Integer, Integer> map) { if (map == null) return 0; int maxValue = -1; int maxKey = -1; Iterator<Entry<Integer, Integer>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Entry<Integer, Integer> next = iterator.next(); if (next.getValue() > maxValue) { maxKey = next.getKey(); maxValue = next.getValue(); } } return maxKey; }