准备

现有一个一维数组:{1,2,3,4,5,6,7,8,9}
转为 3*3 的二维数组:{1,2,34,5,67,8,9}

我们不难看出:

一维数组第1个元素在数组中为 arr[0][0],
一维数组第3个元素在数组中为 arr[0][2],
一维数组第4个元素在数组中为 arr[1][0],
由于第(n+1)个元素下标为n,为此我们可以得出结论:
一维数组的第n个元素,在二维数组中表示为:arr[n / col][n % col]

题目引入

引用LeetCode的第566题,题意如下:

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。
给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

代码实现:

class Solution {public int[][] matrixReshape(int[][] mat, int r, int c) {// 安全性校验int m = mat.length;int n = mat[0].length;// row*col不等于传递过来的数,不能组成新的维度数组if ((m * n) != (r * c)) {return mat;}// 程序走到这里,表明能组成新的维度数组// 创建一个新的二维数组int res[][] = new int[r][c];// 遍历旧的二维数组for (int i = 0; i < m * n; i++) {// 由以上公式,我们可以推导出:res[i / c][i % c] = mat[i / n][i % n];}return res;}
}

代码实现二:

1、先将旧的二维数组转为一维数组;
2、再将一维数组转为按照规则实现的二维数组
public int[][] matrixReshape(int[][] mat, int r, int c) {// 二维数组的行数int n = mat.length;// 二维数组的列数int m = mat[0].length;if ((n * m) != (r * c)) {return mat;}int arr[] = new int[n * m];int index = 0;// 将二维数组转为一维数组for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {arr[index++] = mat[i][j];}}// 将一维数组转变为二维数组int res[][] = new int[r][c];index = 0;for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {res[i][j] = arr[index++];}}return res;}

Java一维数组与二维数组的转换相关推荐

  1. java基础5 (一维)数组和二维数组

    本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等))     二维数组(二维数组的遍历.排序.查找.定义 ...

  2. Java——动态创建一维数组和二维数组

    一.数组的定义: 整数型一维数组:int[] a;或 int a[];        a = new int[m];(m为数组元素个数) 整数型二维数组:int[][] a;或 int a[][];或 ...

  3. 【java基础】——一维数组和二维数组存储占用内存大小问题

    问题:在java中,一维数组和二维数组在数据量一样的情况下,开辟的内存大小是怎样的? 一.尝试阶段: 1.代码一: public class OneArrayMemory{public static ...

  4. Java中的一维数组和二维数组

    Java中的数组 常用的就是一维数组.二维数组. 一维数组 数组定义:数据就是相同数据元素的集合. 数组是一种引用数据类型.不属于基本数据类型. (1) 如何定义(声明)一维数组? 声明格式:数据类型 ...

  5. java 二维数组 的方法和属性_Java一维数组和二维数组详解(Java必备知识)

    数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组.是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列. 目录 一维数组 创建一维数组 给一维数组赋值 获取数组的 ...

  6. Java数组介绍(一维数组和二维数组)

    Java数组介绍(一维数组和二维数组) 1. 概述 · 数组是存储多个变量的容器. · 存储的多个变量必须是同一种数据类型. · 数组既可以存储基本数据类型,也可以存储引用数据类型. 2. 数组定义的 ...

  7. java操作数组(一维数组、二维数组的声明和遍历)

    java操作数组(一维数组.二维数组的声明和遍历) 1.一维数组 三种声明数组的方法和四种遍历数组的方法 public static void main(String[] args) {//静态初始化 ...

  8. java基本语法(三)——一维数组和二维数组

    数组是最常见的数据结构,每个数组元素存放一个数据,通过数组元素的索引来访问数组元素. 一维数组 数组的定义 java支持两种方式来定义数组 1) type[] arrayName; 2) type a ...

  9. 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组

    整篇文章为对java数组的完整理解以及部分排序,并有一些简单的demo,经典的案例与蓝桥杯的一些经典数组题有专门的文章梳理. 目录 数组概述 什么是数组 数组的结构 数组的特点: 数组分类 一维数组声 ...

  10. 一维数组和二维数组创建,输出,Arrays.fill()替换

    package com.xxx.xxx;import java.util.Arrays;public class demo8 {/*** 1.初始化一维数组 使用一维数组* 2.初始化二维数组 使用二 ...

最新文章

  1. Oracle 10g 应用补丁PSU 10.2.0.5.180717
  2. C# 4.0 新特性之并行运算(Parallel)
  3. BZOJ.1143.[CTSC2008]祭祀(Dilworth定理 最大流ISAP)
  4. numpy的深复制与浅复制的区别_Python之Numpy基础,强大到让你五体投地
  5. .NET 6新特性试用 | 隐式using指令
  6. python中swap函数_python swap
  7. 新项目jenkis配置
  8. 在Struts 2中使用JSON Ajax
  9. ios网络学习------1get post异步请求
  10. poj 2309 BST 使用树状数组的lowbit
  11. Pandas Learning
  12. Flask留言板Demo
  13. Oracle数据库面试题
  14. PDF转换工具安装教程
  15. 《微软System Center 2012 R2私有云部署实战》——第一章 微软私有云概述1.1 大数据...
  16. linux ipv6 前缀 定义,家庭拨号动态前缀IPv6环境下的内部设备IPv6地址的端口放通...
  17. 凉开水泡绿茶有利降血糖
  18. python爬取问卷星内容_Python Selenium 问卷星自动填写
  19. 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象教学内容
  20. 卡塔兰数用于求解不同形态的二叉树的数目,题目选自CS61A2021 LAB9 Q3: Number of Trees

热门文章

  1. 学计算机用什么手机,准大学生要买什么样的电脑与手机呢?这些要知道,绝不花冤枉钱!...
  2. 使用matplotlib模拟e^x的麦克劳林展开式
  3. 任务的同步和通信(一)
  4. 艾达瓦”,变成了“艾达瓦”。是什么解码方式
  5. 【吴刚】电商广告设计标准视频教程-吴刚-专题视频课程
  6. vue @input和@click的区别
  7. 柔情在暗夜思绪里泛滥(转)
  8. js sleep 休眠延迟程序
  9. 【SIM卡】补充省下一些其他的SIM相关问题
  10. 总体分析——机票预订系统