已经有很多答案。这是另一种方法。您处在正确的轨道上,但是无需通过将对角线元素与下一个元素一起检查等等来使事情复杂化。只需检查每个对角线元素与第一个对角线元素。一旦发现差异,就停止检查!
public static void checkDiagonal(int[][] array){ // Start with the assumption that both diagonals are consistent. boolean majorConsistent = true; boolean minorConsistent = true; int length = array.length; int tempMajor = array[0][0]; // all elements in the Major must be equal to this int tempMinor = array[0][length-1]; // all elements in the Minor must be equal to this // Check major diagonal, and update the boolean if our assumption is wrong. for(int i=0; i<length; i++){ if (array[i][i] != tempMajor) { //(0,0);(1,1);(3,3);... majorConsistent = false; break; } } // Check minor diagonal, and update the boolean if our assumption is wrong. for(int i=0,j=length-1; i<length; i++,j--){ if (array[i][j] != tempMinor) { //(0,7);(1,6);(2,5);... minorConsistent = false; break; } } System.out.println("Major elements all same = "+majorConsistent); System.out.println("Minor elements all same = "+minorConsistent); }这样,您仍然可以同时执行 O(n)中 的检查,并且不需要嵌套for循环! 请注意 ,您可以优化此代码以消除冗余,即具有单个for循环等。



