二维数组打印

有一个二维数组(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]

分析:首先明确二维数组的一些知识点:数组值arr[x][y]表示指定的是第x行第y列的值。在使用二维数组对象时,注意length所代表的长度,数组名后直接加上length(如arr.length),所指的是有几行(Row);指定索引后加上length(如arr[0].length),指的是该行所拥有的元素,也就是列(Column)数目。
import java.util.*;

public class Printer {
    public static void main(String[] args){
        int[][] arr = {{1,2,3,4},
                    {5,6,7,8},
                    {9,10,11,12},
                    {13,14,15,16}};
        System.out.print(arrayPrint(arr,4));
    }
    public static int[] arrayPrint(int[][] arr, int n) {
        int[] temp=new int[n*n];//构建一个一维数组存放返回的结果数组
        int k=0;
        for(int i=1;i<=2*arr.length-1;i++){
            if(i<=arr.length){
                for(int j=i;j>0;j--){
                    temp[k]=arr[i-j][arr.length-j];
                    k++;
                }
            }
            if(i>arr.length){
                for(int j=i-arr.length;j<=arr.length-1;j++){
                    temp[k]=arr[j][arr.length-(i-j)];
                    k++;
                }
            }
        }
        return temp;
    }
}

  

				
时间: 2024-10-25 11:41:01

二维数组打印的相关文章

用二维数组打印出杨辉三角

用二维数组打印出杨辉三角 首先你得知道二位数组和熟练二位数组,再次你得知道杨辉三角的规律! 相信能知道这个的,你已经掉了半只脚在这个坑了,不说废话直接上... 针对Javascript掌握基础的: 在电脑输入cmd命令打开控制器先要创建node'.js的环境: 你得把这个文件夹和你的js文件放在一起! js代码如下: 1 let readline = require("readline-sync"); 2 console.log("请输入杨辉三角的行数:"); 3

二维数组打印杨辉三角

一共搞了三个版本~虽然核心算法是一样的,但是我说是三个就是三个!!! 一.普通版 let readline=require("readline-sync"); console.log("请输入杨辉三角的行数:"); let line = parseInt(readline.question("")); let arr=[[1],[1,1]]; for(let i=2;i<line;i++){ arr[i]=[]; for(let j=0;j

使用二维数组打印10行的杨辉三角

提示: 1.第1行有1个元素,第n行有n个元素: 2.每一行的第一个元素和最后一个元素都是1: 3.从第三行开始,对于非第一个元素和最后一个元素的元素,即 yanghui[i][j] = yanghui[i-1][j] + yanghui[i-1][j-1]; public class YangHuiTriangle { public static void main(String[] args) { //1.创建并初始化数组 int[][] yanghui = new int[10][]; /

二维数组打印乘法表,三角形,输入三个数,输出最大值

public class ShuZuText { public static void main(String []args) { // bijiaodaxiao(); jiujiuchengfabiao(); sanjiaoxing(); } private static void sanjiaoxing() { for(int i = 1;i<=5;i++){ for(int j = 5-i;j >= 1;j--){ System.out.print(" "); } f

C语言 二维数组复制、清零及打印显示

#include <stdlib.h> #include <stdio.h> #include <string.h> //二维整型数组打印显示 void printarr2d(int (*a)[3],int row,int col) { int i,j; for(i=0; i<row; i++) { for(j=0; j<col; j++) { printf("%d ", a[i][j]); } printf("\n"

Java实验项目二——二维数组实现九九乘法表

Program:打印乘法口诀表 (1)编写一个方法,参数(二维数组),完成将二维数组中的数据按照行列显示的工作. (2)编写一个测试方法,给出99乘法表,放入到二维数组中,调用(1)中的方法,显示乘法口诀表. Description:main方法所在类在最后给出,代码如下: 1 /* 2 *Description:定义工具类,负责初始化二维数组和打印二维数组 3 * 4 * */ 5 6 package tools; 7 8 9 public class Operate { 10 11 //初始

二维数组应用

/* * 使用二维数组打印一个 10 行杨辉三角. [提示] 1. 第一行有 1 个元素, 第 n 行有 n 个元素 2. 每一行的第一个元素和最后一个元素都是 1 3. 从第三行开始, 对于非第一个元素和最后一个元素的元素.即: yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j]; * */ public class YangHuiTest { public static void main(String[] args) { //1.声明并初

顺时针和逆时针螺旋打印二维数组(行列式)

一.要求: 行列式,行和宽不一定相等,要求顺时针螺旋打印每一个元素,所谓顺时针螺旋即: 第一圈:从第一行第一列元素开始,先从左到右打印第一行所有元素,接着打印最后一剩余列元素,再从右到左打印最后一行剩余元素,接着从下到上打印第一列剩余元素 第二圈:从第二行第二列开始,按上面的顺时针顺序打印一圈元素 ...,一圈圈反复,直到把所有元素无重复的打印完. 逆时针螺旋与上面的顺序刚好相反. 二.分析: 顺时针螺旋打印可以将问题分割为:先按顺时针打印第一圈,再按顺时针打印第二圈,其中每圈又分四个步骤:从左

二维数组环形打印,亲自调试

/*先把数据按照打印格式打印到二维数组中,然后输出二维数组即可 *时间复杂度 O(N*M) *空间复杂度O(N*M) */ #include<stdio.h> #include<string.h> #include<stdlib.h> int input(void); void contral(int **arry,int col,int row); void set_value(int**a,int col,int row, int start); void prin