题目:2373.矩阵中的局部最大值

题目来源:

        leetcode题目,网址:2373. 矩阵中的局部最大值 - 力扣(LeetCode)

解题思路:

       开辟一个大小为(n-2)*(n-2)的二维整型数组res存放结果,开辟一个大小为3的一维整型数组temp存放需比较的三列的最大值。在遍历原数组求最大值时,比较完当前三列并获得最大值后,当前需比较的三列中的后两列在下一次操作中可能会用到,将其前在数组中的位置向前移动一位,然后在下一次比较中可能只需要获得三列中一列的最大值。

解题代码:

class Solution {
    public int[][] largestLocal(int[][] grid) {
        int[][] res=new int[grid.length-2][grid[0].length-2];//存放结果
        int[] temp=new int[3];//存放前三列前三行最大值
        for(int i=0;i<res.length;i++){
            temp[0]=forMax(grid[i][0],grid[i+1][0],grid[i+2][0]);
            temp[1]=forMax(grid[i][1],grid[i+1][1],grid[i+2][1]);
            for(int j=0;j<res[0].length;j++){
                temp[2]=forMax(grid[i][j+2],grid[i+1][j+2],grid[i+2][j+2]);
                res[i][j]=forMax(temp[0],temp[1],temp[2]);
                temp[0]=temp[1];
                temp[1]=temp[2];
            }
        }
        return res;
    }
    public static int forMax(int i,int j, int k){
        int res= i>j?i:j;
        return res>k?res:k;
    }
}
 

总结:

        写解题思路时想到可以对原数组进行1次获取2*2的局部最大值,然后在对产生的数组进行一次获取2*2的局部最大值,结果即为所求。

        官方题解里面只提供了暴力遍历一种解法。

        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值