一起学算法(二维数组篇)

news2024/9/24 3:20:23

1.概念定义

1.矩阵的定义

       矩阵A(nm)的定义时按照长方形排列的复数或实数集合,其中n代表的是行数,m代表的是列数。如下所示,代表的是一个4x3的矩阵

 在Java中,我们可以用A[n][m]来代表一个n*m的矩阵,其中A[i][j]代表的是第i行,第j列的值。

2.矩阵的水平翻转

矩阵的水平翻转,就是将矩阵的每一行的元素进行排序,矩阵A(4x3)水平翻转后的结果如下所示:

3.矩阵的垂直翻转

       矩阵的垂直翻转,就是将矩阵的每一列的元素进行逆序,矩阵A(4x3)水平垂直翻转后的结果如下所示:

 4.矩阵的顺时针翻转

       矩阵的顺序表旋转90度,简单来说,就是绕着垂直屏幕向里的方向,对矩阵进行90度旋转,这时候行列会交换,所以矩阵A(4x3)顺时针90度旋转后的结果如下所示:

 5.矩阵的逆时针旋转

      矩阵的逆时针旋转90度,我们乐意理解成顺时针旋转270度,所以就是做3次顺时针旋转90度的操作

6.矩阵的转置

矩阵的转置,就是对矩阵的主对角线对称的元素进行交换操作,矩阵A(4x3)转置的结果如下:

 7.二维数组

二维数组可以用来描述矩阵,定义如下(3行4列)

int[][] num=new int[4][3];

怎样才能实现二维数组中的初始化呢?(如果定义)

 

 int[][] num=new int[5][];//第一个数是必须填的
 int[][] num=new int[][5];//而这样是编译不通过的
int[][] num=new int[][]{{1,2,3},{1,5,6},{6,3,5}};

       本质上,你可以把二维数组理解成一个一维数组,只不过一维数组的每一个元素,也是一个一维数组

8.二维数组的索引

数组中下标从0开始,那么,如果要取得数组中的i行j列的元素,可以通过a[i-1][j-1]进行获的

leetcode题单:

统计有序矩阵中的负数

    public int countNegatives(int[][] grid) {
      int count=0;
      for(int i=0;i<grid.length;i++){
          for(int j=0;j<grid[0].length;j++){
              if(grid[i][j]<0){
                  count++;
              }
          }
      }
      return count;
    }

最富有客户的资产总量

    public int maximumWealth(int[][] accounts) {
     int ans=0;
     for(int i=0;i<accounts.length;i++){
         int sum=0;
         for(int num:accounts[i]){
            sum+=num;
         }
        ans=Math.max(ans,sum);
     }
     return ans;
    }

矩阵对角线元素之和

    public int diagonalSum(int[][] mat) {
        int n = mat.length, sum = 0;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                 //i==j  i+j==n-1这里需要自己揣摩一哈
                if (i == j || i + j == n - 1) {
                    sum += mat[i][j];
                }
            }
        }
        return sum;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/823222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java如何实现将类文件打包为jar包

目录 将类文件打包为jar包 1.写类文件2.编译3.测试4.打jar包jar包应该怎么打&#xff1f; 1.首先确保你的项目2.选中你的项目,点右键3.选择runnable jar file4.如下图,直接看图5.然后点finish 将类文件打包为jar包 为实际项目写了一个工具类&#xff0c;但是每次使用时都需要…

记录--一个好用的轮子 turn.js 实现仿真翻书的效果

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 国际惯例&#xff0c;官网链接 官网传送门 Github地址 github上有几个demos例子&#xff0c;介绍了基础用法。 我参考官网的例子&#xff0c;写了一个demo示例 安装 turn.js 依赖 jquery 库&#xff0…

C++设计模式之建造者设计模式

C建造者设计模式 什么是建造者设计模式 建造者设计模式是一种创建型设计模式&#xff0c;它是一种将复杂对象的分解为多个独立部分的模式&#xff0c;以便于构建对象的过程可以被抽象出来并独立变化。 该模式有什么优缺点 优点 灵活性&#xff1a;建造者设计模式允许对象的…

Nacos1.4.1集群——服务注册失败的原因

前言&#xff1a; 学习nacos的时候碰到的问题 当你单击启动的时候不会出现问题 命令&#xff1a; 单击&#xff1a; startup.cmd -m standalone 集群&#xff1a; startup.cmd -m cluster 当时当你启动集群的时候他会默认把你本地的ipv6那个地址默认放上出 会导致你本来搭建集群…

牛客网Verilog刷题——VL56

牛客网Verilog刷题——VL56 题目答案 题目 实现4bit无符号数流水线乘法器设计。电路的接口如下图所示&#xff1a; 输入输出描述&#xff1a; 信号类型输入/输出位宽描述clkwireInput1系统时钟信号rst_nwireInput1异步复位信号&#xff0c;低电平有效mul_awireInputsize乘数mu…

【动态规划part16】| 583.两个字符串的删除操作、72.编辑距离

&#x1f388;LeetCode583.两个字符串的删除操作 链接&#xff1a;583.两个字符串的删除操作 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 public int minDistance(String word1, Str…

基于Amoeba读写分离(三十六)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 今天要学的是基于Amoeba读写分离。Amoeba是一个开源的关系型数据库管理系统&#xf…

计网第四章网络层错题

4.1 没有要求结点要相邻&#xff0c;可不可靠主要取决于使用的协议&#xff0c;若使用有连接的 就可靠 2.C 本题易误选B 因为大家以为只能用ipv4 但是有特定的路由器可以连接IPv4和IPv6&#xff0c;所以网络层的协议也可以不同 C 路由器无法处理比网络层更高层次的数据 所以…

Redis集群Cluster搭建

Redis集群Cluster搭建 集群框架1、下载redis2.创建Cluster文件3.修改redis配置文件4.启动redis5.链接各个redis6.分配槽位7.添加从机节点&#xff08;备份Redis&#xff09;8.以集群方式登录9.使用开源Redis可视化客户端链接 集群框架 三个集群节点&#xff0c;每个节点有个副本…

Ubuntu安装MySQL 8.0与Navicat

目录 Ubuntu安装MySQL 8.0 1、更新软件包列表 2、安装 MySQL 8.0 3、启动 MySQL 服务 5、确保MySQL服务器正在运行 5、root 用户的密码 6、登录MySQL&#xff0c;输入mysql密码 7、MySQL默认位置 Ubuntu安装Navicat 1、下载 Navicat 2、额外的软件包 3、执行命令 U…

IDEA离线环境搭建远程开发-Windows

公司的云桌面实在太卡&#xff0c;多个微服务项目跑起来&#xff0c;直接无法进行其它编码工作&#xff0c;所以想到使用Idea提供的远程开发功能&#xff0c;将服务运行在服务器&#xff0c;电脑只提供给开发页面展示&#xff0c;提高效率。 环境介绍&#xff1a; 开发环境&…

python——案例六:清空列表用clear()方法实现

案例六&#xff1a;清空列表用clear()方法实现LIST[0,1,2,3,4,5] print(清空前&#xff1a;,LIST) LIST.clear() print(清空后&#xff1a;,LIST)

Carsim的基本功能介绍

Carsim 是一款汽车动力学模拟软件&#xff0c;它可以模拟车辆在路面上的运动和行驶行为&#xff0c;支持用户进行不同情况下的测试和研究。以下小师弟所了解的Carsim最基础的使用方法&#xff1a; 安装 Carsim 软件并打开。 Carsim是一个比较简单容易上手的软件&#xff0c;打…

保姆级教程,Linux服务器docker搭建jenkins持续集成一键部署SpringBoot项目(Gradle)

前言&#xff1a; 在后台项目开发过程从Java延伸到Kotlin开发&#xff0c;从maven pom到gradle&#xff0c;IDEA新项目SpringBoot init框架官方推荐kotlingradle&#xff0c;本章以此为jenkins持续集成做项目部署&#xff0c;服务器为Centos&#xff0c;JDK 17&#xff0c;Spr…

各种运算符

算术运算符 1.双目运算符 */%&#xff1a;从左到右优先级依次降低 一些注意事项&#xff1a; 1若a/b都为整型那么结果也为整型&#xff0c;如果ab其中有一个为实型&#xff0c;结果则为实型 求余运算符注意事项&#xff1a; 1运算对象必须为整数 2运算结果的整数跟左边数字的…

Go项目实现日志按时间及文件大小切割并压缩

关于日志的一些问题: 单个文件过大会影响写入效率&#xff0c;所以会做拆分&#xff0c;但是到多大拆分? 最多保留几个日志文件&#xff1f;最多保留多少天&#xff0c;要不要做压缩处理&#xff1f; 一般都使用 lumberjack[1]这个库完成上述这些操作 lumberjack //info文件wr…

linux用户密码存放在哪个文件

linux用户密码存放在“/etc/shadow”文件中。“/etc/shadow”文件又称为“影子文件”&#xff0c;用于存储Linux系统中用户的密码信息&#xff1b;该文件只有root用户拥有读权限&#xff0c;其他用户没有任何权限&#xff0c;这样就保证了用户密码的安全性。 本教程操作环境&am…

IOS看书最终选择|源阅读转换|开源阅读|IOS自签

环境&#xff1a;IOS想使用 换源阅读 问题&#xff1a;换新手机&#xff0c;源阅读下架后&#xff0c;没有好的APP阅读小说 解决办法&#xff1a;自签APP 转换源仓库书源 最终预览 &#xff1a;https://rc.real9.cn/ 背景&#xff1a;自从我换了新iPhone手机&#xff0c;就无法…

iOS 搭建组件化私有库

一、创建私有库索引 步骤1是在没有索引库的情况下或者是新增索引的时候才需要用到&#xff08;创建基础组件库&#xff09; 首先在码云上建立一个私有库索引&#xff0c;起名为SYComponentSpec 二、本地添加私有库索引 添加私有库索引 pod repo add SYComponentSpec https:/…

fiddler 手机抓包(含https) 完整流程

第一部分&#xff1a;下载并安装fiddler 一.使用任一浏览器搜索【fiddler下载安装】&#xff0c;并下载fiddler 安装包。 二.fiddler安装包下载成功后&#xff0c;将下载的fiddler压缩包解压到自定义文件夹【fiddler】或者解压到当前文件夹下&#xff0c;双击文件夹中的【fidd…