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;
    }
}
相关推荐
北冥有鱼被烹1 小时前
perftest 之 ib_write_bw --use-null-mr 参数详解:用 NULL MR 做 RDMA 带宽测试
java
2601_963870211 小时前
基于SSM的特产代购系统
java·前端
圣保罗的大教堂1 小时前
leetcode 3524. 求出数组的 X 值 I 中等
leetcode
牧瀬クリスだ1 小时前
YAML配置详解:SpringBoot实战指南
java·spring·yml
Su5731 小时前
RuoYi + RAGFlow 搭建私有化知识库完整集成实践(二)
java
wechatbot8881 小时前
极客互动企业微信 SCRM 自动运营平台效果实测
java·微信·企业微信·rpa
需要8261 小时前
JVM 内存区域与对象创建:一次 GC 从哪来
java·jvm·spring boot·spring·servlet·tomcat
伞伞悦读2 小时前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
事圆则缓2 小时前
Java 转 Kotlin 的 Android 迁移路线
java