• 2016校招真题之二维数组打印


    1、题目描述

    有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印。给定一个二位数组arr及题目中的参数n,请返回结果数组。

    测试样例:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4
    返回:[4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13]

    2、代码实现

     1 package com.wcy.october;
     2 
     3 /**
     4  * 时间:2016年7月18日
     5  * 题目:二维数组打印
     6  * 题目描述:有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印。给定一个二位数组arr及题目中的参数n,请返回结果数组。
     7  * 测试样例:[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4
     8  * 返回:[4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13]
     9  */
    10 public class Printer {
    11 
    12     /**
    13      * 从右上角到左下角沿主对角线方向打印数组
    14      * @param arr
    15      * @param n
    16      * @return
    17      */
    18     public int[] arrayPrint(int[][] arr, int n) {
    19         int[] resultArray = new int[n*n];
    20         int num = 0;
    21         for (int i = n-1; i >= 0; i--) {
    22             for (int j = 0; j < n-i; j++) {
    23                 resultArray[num] = arr[j][i+j];
    24                 resultArray[n*n-1-num] = arr[n-1-j][n-1-i-j];
    25                 num++;
    26             }
    27         }
    28         return resultArray;
    29     }
    30     
    31     /**
    32      * 打印数组函数
    33      * @param arr 待打印的数组
    34      */
    35     public void showArray(int[] arr){
    36         System.out.print("[");
    37         for (int i = 0; i < arr.length; i++) {
    38             if (i == arr.length-1) {
    39                 System.out.print(arr[i]);
    40             }else {
    41                 System.out.print(arr[i] + ",");
    42             }
    43         }
    44         System.out.println("]");
    45     }
    46     
    47     /**
    48      * 用户页面测试
    49      * @param args
    50      */
    51     public static void main(String[] args) {
    52         Printer test = new Printer();
    53         int[][] arr = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
    54         int[] resultArray = test.arrayPrint(arr, arr.length);
    55         test.showArray(resultArray);
    56     }
    57     
    58 }
  • 相关阅读:
    博客的开端,找对象不再new
    OpenGL编程 基础篇(六)OpenGL中几种光照参数
    OpenGL编程 基础篇(五)世界窗口和视口
    百练2952:循环数
    百练2811:熄灯问题
    百练2812:恼人的青蛙
    百练3177:判决素数个数
    百练1248:Safecracker
    OpenGL编程 基础篇(四)与鼠标的交互
    OpenGL编程 基础篇(三)用点集绘制函数
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5981710.html
Copyright © 2020-2023  润新知