A.每日一题:835. 图像重叠

题目链接:835. 图像重叠(中等)

算法原理:

解法:暴力枚举

时间复杂度O(N⁴)

11ms击败80.14%

记:

n:矩阵边长

dx:img1 向下移动 dx 单位(dx>0是往下挪,dx<0是往上挪)

dy:img1 向右移动 dx 单位(dx>0是往右挪,dx<0是往左挪)

cnt1:当前这个平移方案下,重复 1 的总数

那么 img1ij 平移后对应 img2i+dxj+dy

必须保证移动后不越界:0 <= i+dx < n

同时本身也不能越界:0 <= i < n

二者取交集:max(-dx,0) <= i < min(n-dx,n)

遍历时先枚举移动多少单位,再去枚举每一个元素在该移动单位下能重叠的 1 的个数(两个数都是1,才能让计数+1)

Java代码:

java 复制代码
class Solution {
    //835. 图像重叠
    public int largestOverlap(int[][] img1, int[][] img2) {
        int n=img1.length;
        int ret=0;
        for(int dx=1-n;dx<n;dx++){
            for(int dy=1-n;dy<n;dy++){
                int cnt1=0;
                for(int i=Math.max(-dx,0);i<Math.min(n-dx,n);i++){
                    for(int j=Math.max(-dy,0);j<Math.min(n-dy,n);j++){
                        //两个数都是1,才能让cnt1增加1
                        cnt1+=img1[i][j]*img2[i+dx][j+dy];
                    }
                }
                ret=Math.max(ret,cnt1);
            }
        }
        return ret;
    }
}
相关推荐
dialect_1 小时前
KMP算法
开发语言·c++·算法
captain3762 小时前
MyBatis(入门5)其他查询操作
java·数据库·spring boot·mybatis
Novproxy_Z2 小时前
商用代理避坑:如何识别商家拿机房 IP 冒充住宅 IP
java·网络·tcp/ip
总要学点什么2 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
夕除2 小时前
Redis 过期策略
redis·笔记·面试
文丑颜不良啊3 小时前
LeetCode1481~1500题目解析
java·leetcode
2601_962885723 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
前端精髓3 小时前
调用openrouter的免费API模型
java·前端·javascript
步行cgn3 小时前
Spring MVC 拦截器 Interceptor 详解:从执行流程到实战应用
java·spring·mvc
文丑颜不良啊3 小时前
LeetCode1381~1400题目解析
java·leetcode