leetcode1292. 元素和小于等于阈值的正方形的最大边长(二分法+前缀和)

给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。

请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。
示例 2:

输入:mat = [[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2],[2,2,2,2,2]], threshold = 1
输出:0

代码

class Solution {public int getMaxSideLength(int[][] mat,int x1,int y1,int x2,int y2) {return mat[x2][y2]-mat[x1-1][y2]-mat[x2][y1-1]+mat[x1-1][y1-1];//获取正方形的和}public int maxSideLength(int[][] mat, int threshold) {int n=mat.length,m=mat[0].length;int[][] add=new int[n+1][m+1];for(int i=1;i<=n;i++)//构建前缀和for(int j=1;j<=m;j++){add[i][j]=add[i][j-1]+add[i-1][j]-add[i-1][j-1]+mat[i-1][j-1];}int l=1,r= Math.min(n,m),res=0;while (l<=r)//二分法查找最大边长{boolean find=false;int mid=(r-l)/2+l;for(int i=1;i<=n-mid+1;i++)//查找满足的正方形for(int j=1;j<=m-mid+1;j++)if(getMaxSideLength(add,i,j,i+mid-1,j+mid-1)<=threshold){find=true;}if(find)//找到了满足的边长,尝试更大的{res=mid;l=mid+1;}else r=mid-1;}return res;}
}

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

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

相关文章

java 反射 获取成员_java 反射获取成员

package com.wxjaa; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class TestReflect { public static void main(String[] args) throws Exception { // getDeclaredField 可以获取私有成员&#xff0c; …

Koa 中实现 chunked 数据传输

有关于 Transfer-Encoding:chunked 类型的响应&#xff0c;参见之前的文章HTTP 响应的分块传输。这里看 Koa 中如何实现。 Koa 中请求返回的处理 虽然官方文档有描述说明不建议直接调用 response.write&#xff1a; Bypassing Koas response handling is not supported. Avoid …

git 短写设置_如何在短短几分钟内设置一个Git客户端

git 短写设置Today we’re going to talk about Git. You’re going to learn what Git is and how to set up a Git client on your computer.今天我们将讨论Git。 您将学习什么是Git&#xff0c;以及如何在计算机上设置Git客户端。 什么是Git&#xff1f; (What is Git?) I…

P1977 出租车拼车

P1977 出租车拼车 题目背景 话说小 x 有一次去参加比赛&#xff0c;虽然学校离比赛地点不太远&#xff0c;但小 x 还是想坐 出租车去。大学城的出租车总是比较另类&#xff0c;有“拼车”一说&#xff0c;也就是说&#xff0c;你一个人 坐车去&#xff0c;还是一堆人一起&#…

leetcode1011. 在 D 天内送达包裹的能力(二分查找)

传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。 传送带上的第 i 个包裹的重量为 weights[i]。每一天&#xff0c;我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。 返回能在 D 天内将传送带上的所有包裹送达的船的最低运载…

java集合概念_JAVA集合概念

Java集合是使程序能够存储和操纵元素不固定的一组数据。 所有Java集合类都位于java.uti包中。与Java数组不同&#xff0c;Java集合中不能存放基本数据类型&#xff0c;只能存放对象的引用。但是在JDK5.0以后的版本当中&#xff0c;JAVA增加了“自动装箱”和“自动拆箱”的机制&…

项目计划总结

项目计划总结 任务 日期 听课&#xff08;min&#xff09; 编程&#xff08;min&#xff09; 阅读课本&#xff08;min&#xff09; 日总结&#xff08;min&#xff09; 2017/3/13 120 70 190 2017/3/14 80 80 2017/3/15 90 30 120 2017/3/16 …

HTML5新特性之Mutation Observer

Mutation Observer&#xff08;变动观察器&#xff09;是监视DOM变动的接口。当DOM对象树发生任何变动时&#xff0c;Mutation Observer会得到通知。 要概念上&#xff0c;它很接近事件。可以理解为&#xff0c;当DOM发生变动会触发Mutation Observer事件。但是&#xff0c;它与…

leetcode230. 二叉搜索树中第K小的元素(中序遍历)

给定一个二叉搜索树&#xff0c;编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明&#xff1a; 你可以假设 k 总是有效的&#xff0c;1 ≤ k ≤ 二叉搜索树元素个数。示例 1:输入: root [3,1,4,null,2], k 13/ \1 4\2 输出: 1解题思路 变量 cnt:统计已经按序遍…

Python操作MongoDB - 极简教程

2019独角兽企业重金招聘Python工程师标准>>> Python 连接 MongoDB 安装PyMongo模块 pip install pymongo使用MongoClient建立连接 from pymongo import MongoClient # 以下为三种建立连接的方式 #client MongoClient() #client MongoClient(localhost, 27017) #cl…

nuxt.js的核心代码_Nuxt.js中的通用应用程序代码结构

nuxt.js的核心代码by Krutie Patel通过克鲁蒂帕特尔(Krutie Patel) Nuxt.js中的通用应用程序代码结构 (Universal application code structure in Nuxt.js) Nuxt.js中的源代码结构的简要摘要 (A brief summary of source code structure in Nuxt.js) Are you new to the Nuxt.…

java 省市区三级联动_AJAX省市区三级联动下拉菜单(java版)

此小程序的功能主要是采用异步请求方式从数据库中调取省市区信息显示到下拉列表&#xff1a;代码如下&#xff1a;建立数据库中的代码和一些配置文件信息就省略了&#xff0c;主要有JavaScript中的代码为&#xff1a;$(document).ready(function(){$.get("getProvince.do&…

20155305乔磊2016-2017-2《Java程序设计》第四周学习总结

20155305乔磊2016-2017-2《Java程序设计》第四周学习总结 教材学习内容总结 继承 继承就是避免多个类间重复定义共同行为。面向对象中&#xff0c;子类继承父类&#xff0c;就是把程序中相同的代码部分提升为父类。extends关键字&#xff0c;表示前者会扩充后者的行为&#xff…

leetcode29. 两数相除(位运算)

给定两个整数&#xff0c;被除数 dividend 和除数 divisor。将两数相除&#xff0c;要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去&#xff08;truncate&#xff09;其小数部分&#xff0c;例如&#xff1a;…

【eclipse转idea的第一天】配置idea

为什么80%的码农都做不了架构师&#xff1f;>>> 导入maven项目 设置maven(全局) 为了不然才转idea的码友们重复我犯过的错&#xff0c;我这儿截图步骤说明下&#xff1a; 这里是列表文本这里是列表文本idea的设置有两种&#xff1a;全局&#xff0c;局部(我这么叫的…

node.js web框架_使用Node.js进行Web爬取的终极指南

node.js web框架So what’s web scraping anyway? It involves automating away the laborious task of collecting information from websites.那么&#xff0c;什么是网络抓取&#xff1f; 它涉及自动化从网站收集信息的艰巨任务。 There are a lot of use cases for web s…

java局部内部类 final_Java的局部内部类以及final类型的参数和变量

Thinking In Java里面的说法(***正确的说法)&#xff1a; 如果定义一个匿名内部类&#xff0c;并且希望它使用一个在其外部定的对象&#xff0c;那么编译器会要求其参数引用是final 的。publicclassTester {publicstaticvoidmain(String[] args) {A a newA();C c newC();c.shou…

Vmware 安装虚拟工具 (二)

打开虚拟机&#xff0c;以root超级用户登陆&#xff0c;菜单栏选择虚拟机&#xff0c;install安装虚拟机 拷贝虚拟工具到 在根目录下建立文件夹&#xff0c;并将工具拷贝到该文件夹&#xff0c;例如vmtool 打开终端&#xff0c;进入该目录开始安装 如图&#xff0c;进入目录解压…

git与svn的区别 ?Git 与 SVN那个更好?

git与svn的区别 &#xff1a; http://www.360doc.com/content/12/1228/20/11220452_256857021.shtml 在版本控制系统的选型上&#xff0c;是选择Git还是SVN&#xff1f; 对于开源项目来说这不算问题。使用Git极大地提高了开发效率、扩大了开源项目的参与度、 增强了版本控制系统…

强化学习简介

by ADL通过ADL Reinforcement Learning is an aspect of Machine learning where an agent learns to behave in an environment, by performing certain actions and observing the rewards/results which it get from those actions.强化学习是机器学习的一个方面&#xff0…