Java面試題(一)
阿新 • • 發佈:2018-12-19
筆者在面試的過程中,遇到的一些面試題目,面試後不管結果如何,都做一下重新梳理
一、2018-11-01 給定矩陣(二維陣列),要求斜向列印
解題思路:列印的下一個元素下標的規律為:橫向座標減1,縱向座標加1,如果該元素存在,則列印輸出,否則跳過。當縱向座標大於0時,開始位置為當前行最後一列元素。
需要注意的是:雖然是雙層迴圈遍歷,但是因為內層迴圈的跳出條件為只打印最後一列,所以解題的時間複雜度為O(n),n為輸入矩陣的規模
/** * 一個二維陣列列印 * 1,2,3,4 * 5,6,7,8 * 9,10,11,12 * * 列印順序為:1,2,5,3,6,9,…… * 斜對角列印 */ @Test public void testBytesTest(){ int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; // 行 for (int x=0; x< arr.length;x++){ // 列 for (int y=0; y< arr[x].length; y++){ if (x>0){ y = arr[x].length-1; } int m=x; int n=y; System.out.print(arr[m][n] +" "); while ((m < arr.length -1) && (n< arr[x].length) && (n>0)){ System.out.print(arr[m+1][n-1] +" "); m++; n--; } } } }