【个人笔记】英雄哥-《LeetCode零基础指南》(第八讲) 二维数组

Day 7 二维数组

在这里插入图片描述

概念定义

矩阵的定义

A[4x3]

矩阵的水平翻转

对于每一行元素进行逆序,比如001变成100,120变成012
在这里插入图片描述

矩阵的垂直翻转

对于每一列元素进行逆序,比如
0 → 1
0 → 1
1 → 0
1 → 0
在这里插入图片描述

矩阵的顺时针旋转

按照视觉方向,顺时针转90度
在这里插入图片描述

矩阵的逆时针旋转

按照视觉方向,顺时针转270度

矩阵的转置

对矩阵的主对角线对称的元素进行交换
主对角线:左上角到右下角这一斜线方向上的n 个元素所在的对角线
在这里插入图片描述

二维数组

在C中,通过描述矩阵来形成二维数组

int a[3][4];

或者对于数组内的元素进行初始化

int a[3][4] = {
	{5, 2, 0, 4}
	{1, 3, 1, 7}
	{4, 0, 0, 9}
};

或者对于部分进行初始化,让编译器自动识别有多少个数据(第二个不能省略,是每个数据的长度)

int a[][4] = {
	{5, 2, 0, 4}
	{1, 3, 1, 7}   // 识别为3x4
	{4, 0, 0, 9}
};
int a[100][4] = {
	{5, 2, 0, 4}
	{1, 3, 1, 7}  // 识别为100x4,但是初始化前几行
	{4, 0, 0, 9}
};

二维数组索引

a[0][0] // 第一个
a[i][j] // 第i行第j个数

二维数组的函数传参

// 一维数组传参 一个*
int add(int *nums, int numsSize){}
// 二维数组传参 两个*
int diagonalSum(int **mat, int matSize, int* matColSize

matSize:二维数组第一维大小,有多少行
int* matColSize:一个一位数组,每一行有多少列,matColsize[0]代表第0行有matColSize[0]列,matColSize[i]代表第1i行就有matColSize[i]列
由于矩阵每一列元素都一样,所以初始化可以根据如下形式

int diagonalSum(int** mat, int matSize, int* matColSize{
	r = matSize;
	c = matColSize[0];
	//
}

题目练习

LC 1351 统计有序矩阵中的负数

在这里插入图片描述
初始化 r 为矩阵数据个数,grid[r]为最后一个数据
初始化 c 为矩阵每个数据的长度,grid[r][c]为最后一个数据中的最后一个数
初始化 i,j,ans 为0为后续遍历
首先遍历每一个数据,grid[0]到grid[r],在遍历中每一个数据为grid[i]
在每一个grid[i]中,grid[i][0]到grid[i][c],在遍历中每一个数据的数据为grid[i][j]
遍历每一个grid[i][j],查看是否小于0,若小于0,ans自加1

LC 1572 矩阵对角元素的和

在这里插入图片描述

  1. 统计所有主对称轴上的值的总和,即mat[i][i]
  2. 统计所有辅对称轴上的值的总和,即mat[i][r-i-1]
  3. 在2中去掉重复项,即r-i-1 = i的情况

LC 1672 最富有客户的资产总量

在这里插入图片描述

  1. 初始化参数,这里对于每一个数据的数据长度需要带*进行初始化
  2. 初始化参数,设定临时最大值为sumValue,总体最大值为maxValue
  3. 对于每一个客户,统计他们所有的财产总值,并记为sumValue
  4. 如果 sumValue大于当前最大总和maxValue,更新maxValue,并记录该客户的id(位于数据中的位置,即i)
  5. 返回maxValue

LC 766 托普利茨矩阵

在这里插入图片描述

  1. 根据描述写出判断语句
  2. 做两个遍历抓取数字进行判断是否相等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值