当前位置:网站首页 > Java基础 > 正文

java矩阵基础运算



通用方法

 
 

后面的题没有处理数组或矩阵本身为空的情况,可以在开头判断一下长度,是0就直接return

模拟

第一题

顺时针一圈一圈的遍历,与左上角和右下角的坐标作比较,直到两坐标交错。

当leftUpRow、leftUpColumn、rightDownRow、rightDownColumn都相等时会剩中间一个中心元素时单独加if处理

 

第二题

 不能直接遍历,遇到0就清零,这样会导致被清零的数也当成0,清零他的行列

所以先记录再清零

 

第三题

 

设置一个标志l2r,来控制从从左下到右上遍历还是从右上到左下遍历

每次横着或竖着改变坐标时,l2r就要变

从左下到右上遍历,就横坐标--,纵坐标++;

从右上到左下遍历,就横坐标++,纵坐标--;

但遇到四个边界时要单独控制移动方向

 

第四题

枚举法:

因为找最大正方形边长,所以从大到小枚举

先找N边长的矩形,再找N - 1,N - 2……

先找左上作为顶点,两层for

再找其他构成边的点 模拟各边遍历,进行检验

 

改进

即:预处理

记录每个元素,右边和下边,包括自己在内的连续的1的数量-->(右边,下面)

--------预处理后--------

 

其他步骤都一样

只有 “再找其他构成边的点 模拟各边遍历,进行检验” 这个进行改进

用左上角的顶点作为依据点

用她画边框进行检验

也就是取边框的几个顶点,利用对应点的预处理,组成边框的四条边,进行判断

java矩阵基础运算

有很多组合,比如

左上角的点右边的1的数目>=n

左上角的点下边的1的数目>=n

左下角的点右边的1的数目>=n

右上角的点下边的1的数目>=n

 

第五题

法一:暴力解法

模拟每一个子数组,进行累加,每增加一个元素,就和最大和作比较,进行更新

 

法二

遍历求和,如果求出来的和是负数,说明对后续累加出来的最大值没有贡献,则子数组的起点从他的下一个元素开始,每次都查看有没有贡献,没有就舍去

 

如果想知道最大和对应的子数组,就设两个指针,存子数组的开头结尾(索引)

 

第六题

 利用第五题的思想

假设只有一行,就可以直接调用第五题的函数

如果有两行,就把两行加一起,再调用第五题的函数

如果有三行,同上

所以,核心思想:把矩阵处理成行向量,调用第五题的函数

设定一个基准行,把它后面的行,一行一行的累加,每加一行就调用第五题的函数,并更新maxSum,即可求出


                            

  • 上一篇: java基础262
  • 下一篇: 济南java基础培训
  • 版权声明


    相关文章:

  • java基础2622025-04-21 22:34:02
  • java基础知识题目2025-04-21 22:34:02
  • java就业基础题2025-04-21 22:34:02
  • java基础分享2025-04-21 22:34:02
  • java基础3002025-04-21 22:34:02
  • 济南java基础培训2025-04-21 22:34:02
  • 小学基础学java2025-04-21 22:34:02
  • java基础20232025-04-21 22:34:02
  • java基础测试2025-04-21 22:34:02
  • java基础的数组2025-04-21 22:34:02