Java一维数组与二维数组的转换
准备
现有一个一维数组:{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一维数组与二维数组的转换相关推荐
- java基础5 (一维)数组和二维数组
本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等)) 二维数组(二维数组的遍历.排序.查找.定义 ...
- Java——动态创建一维数组和二维数组
一.数组的定义: 整数型一维数组:int[] a;或 int a[]; a = new int[m];(m为数组元素个数) 整数型二维数组:int[][] a;或 int a[][];或 ...
- 【java基础】——一维数组和二维数组存储占用内存大小问题
问题:在java中,一维数组和二维数组在数据量一样的情况下,开辟的内存大小是怎样的? 一.尝试阶段: 1.代码一: public class OneArrayMemory{public static ...
- Java中的一维数组和二维数组
Java中的数组 常用的就是一维数组.二维数组. 一维数组 数组定义:数据就是相同数据元素的集合. 数组是一种引用数据类型.不属于基本数据类型. (1) 如何定义(声明)一维数组? 声明格式:数据类型 ...
- java 二维数组 的方法和属性_Java一维数组和二维数组详解(Java必备知识)
数组是最为常见的一种数据结构,分为一级数组,二维数组以及多维数组.是把相同数据类型的元素,用一个标识符封装到一起的基本类型数据序列或对象序列. 目录 一维数组 创建一维数组 给一维数组赋值 获取数组的 ...
- Java数组介绍(一维数组和二维数组)
Java数组介绍(一维数组和二维数组) 1. 概述 · 数组是存储多个变量的容器. · 存储的多个变量必须是同一种数据类型. · 数组既可以存储基本数据类型,也可以存储引用数据类型. 2. 数组定义的 ...
- java操作数组(一维数组、二维数组的声明和遍历)
java操作数组(一维数组.二维数组的声明和遍历) 1.一维数组 三种声明数组的方法和四种遍历数组的方法 public static void main(String[] args) {//静态初始化 ...
- java基本语法(三)——一维数组和二维数组
数组是最常见的数据结构,每个数组元素存放一个数据,通过数组元素的索引来访问数组元素. 一维数组 数组的定义 java支持两种方式来定义数组 1) type[] arrayName; 2) type a ...
- 【蓝桥杯Java_C组·从零开始卷】第四节、一维数组与二维数组
整篇文章为对java数组的完整理解以及部分排序,并有一些简单的demo,经典的案例与蓝桥杯的一些经典数组题有专门的文章梳理. 目录 数组概述 什么是数组 数组的结构 数组的特点: 数组分类 一维数组声 ...
- 一维数组和二维数组创建,输出,Arrays.fill()替换
package com.xxx.xxx;import java.util.Arrays;public class demo8 {/*** 1.初始化一维数组 使用一维数组* 2.初始化二维数组 使用二 ...
最新文章
- Oracle 10g 应用补丁PSU 10.2.0.5.180717
- C# 4.0 新特性之并行运算(Parallel)
- BZOJ.1143.[CTSC2008]祭祀(Dilworth定理 最大流ISAP)
- numpy的深复制与浅复制的区别_Python之Numpy基础,强大到让你五体投地
- .NET 6新特性试用 | 隐式using指令
- python中swap函数_python swap
- 新项目jenkis配置
- 在Struts 2中使用JSON Ajax
- ios网络学习------1get post异步请求
- poj 2309 BST 使用树状数组的lowbit
- Pandas Learning
- Flask留言板Demo
- Oracle数据库面试题
- PDF转换工具安装教程
- 《微软System Center 2012 R2私有云部署实战》——第一章 微软私有云概述1.1 大数据...
- linux ipv6 前缀 定义,家庭拨号动态前缀IPv6环境下的内部设备IPv6地址的端口放通...
- 凉开水泡绿茶有利降血糖
- python爬取问卷星内容_Python Selenium 问卷星自动填写
- 用计算机画有常数的函数图像,信息技术应用 用计算机画函数图象教学内容
- 卡塔兰数用于求解不同形态的二叉树的数目,题目选自CS61A2021 LAB9 Q3: Number of Trees
热门文章
- 学计算机用什么手机,准大学生要买什么样的电脑与手机呢?这些要知道,绝不花冤枉钱!...
- 使用matplotlib模拟e^x的麦克劳林展开式
- 任务的同步和通信(一)
- 艾达瓦”,变成了“艾达瓦”。是什么解码方式
- 【吴刚】电商广告设计标准视频教程-吴刚-专题视频课程
- vue @input和@click的区别
- 柔情在暗夜思绪里泛滥(转)
- js sleep 休眠延迟程序
- 【SIM卡】补充省下一些其他的SIM相关问题
- 总体分析——机票预订系统