74. Search a 2D Matrix

文章目录

  • 1 题目理解
  • 2 二分

1 题目理解

输入:一个mxn的int数组matrix,这个数组每一行按照从小到大排序,并且下一行的第一个值大于上一行的最后一个值。一个int值target
返回:target在matrix中是否存在。存在返回true。

2 二分

我们可以把这个数组看做是一个有序数组。数组下表从0到m*n-1。
在这里插入图片描述

class Solution {public boolean searchMatrix(int[][] matrix, int target) {if(matrix==null || matrix.length==0 || matrix[0].length==0) return false;int l = 0;int r = matrix.length*matrix[0].length-1;int cols = matrix[0].length;while(l<=r){int m = l + ((r-l)>>1);int row = m/cols;int col = m%cols;if(matrix[row][col]==target) return true;if(matrix[row][col]>target){r = m - 1;}else{l = m + 1;}}return false;}
}

也可以先在第一列查找,找到最小的比target大的元素,所在的行l,然后在l-1行查找target是否存在。

class Solution {public boolean searchMatrix(int[][] matrix, int target) {if(matrix == null || matrix.length==0 || matrix[0].length==0) return false;int m = matrix.length;int n = matrix[0].length;//先在第一列找,l是nums[l]>target的最小值int l = 0, r = m-1;while(l<=r){int middle = l+((r-l)>>1);if(matrix[middle][0] == target) return true;if(matrix[middle][0]>target){r = middle-1;}else{l = middle+1;}}if(l>0){int line = l-1;//在line这一行查找l = 0;r = n-1;while(l<=r){int middle = l +((r-l)>>1);if(matrix[line][middle]==target) return true;if(matrix[line][middle]>target){r = middle-1;}else{l = middle+1;}}return false;}else{return false;}}
}

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

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

相关文章

spring mvc学习(13)windows上安装maven

本地安装与配置&#xff1a; 1.jdk 在cmd中运行 Java -version 2.下载maven包 https://maven.apache.org/download.cgi下载最新版的Maven程序&#xff1a;&#xff08;选择bin zip包&#xff09; 将文件解压在D:\Program Files\apache-maven-3.5.4 3.下载eclipse并安装 …

spring mvc学习(14) the superclass “javax.servlet.http.HttpServlet” was not found

问题描述&#xff1a;   我们在用MyEclipse进行Java web开发时&#xff0c;可能会出现这样的错误&#xff1a;The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path。我们该怎么解决这个问题呢&#xff1f; 我遇到的错误显示如下…

4. Median of Two Sorted Arrays

文章目录1题目理解2 二分查找解题2.1中位数的定义2.2 数组切分2.3分析条件1题目理解 输入&#xff1a;2个已经排序号的int数组nums1,nums2 输出&#xff1a;这两个数组合并后的中位数 要求&#xff1a;m是nums1的长度&#xff0c;n是nums2的长度。时间复杂度应该是O(log(mn))。…

第九十三期:带你聊聊 Java 并发编程之线程基础

百丈高楼平地起&#xff0c;要想学好多线程&#xff0c;首先还是的了解一下线程的基础&#xff0c;这边文章将带着大家来了解一下线程的基础知识。 作者&#xff1a;小九 01、简介 百丈高楼平地起&#xff0c;要想学好多线程&#xff0c;首先还是的了解一下线程的基础&#x…

我们还有理想吗?

兴致勃勃从海边享受了几天,本来打算回来后在这里写上几篇.其中还准备了一篇名为"一千个不加班的理由".可笑的是今天就从梦中醒来.因为有几个项目要加快投标准备了.我唯一能做的是耸耸肩膀,公司的事情当然要做,现实就是现实!前几天和老同学突然谈起一个话题,别的行业的…

17. Letter Combinations of a Phone Number

1 题目理解 给定一个字符串string&#xff0c;字符范围是[2,9]之间的数字。数字表示电话上的一个按钮。返回字符串的可能所有组合方式。每个数字对应的字母如下图所示。 Example 1: Input: digits “23” Output: [“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”…

第九十四期:GitHub 发布 2019 年年度报告

GitHub 发布了 2019 年年度报告《The State of the Octoverse》&#xff0c;下边来看看一些主要数据。 作者&#xff1a;佚名 GitHub 发布了 2019 年年度报告《The State of the Octoverse》&#xff0c;下边来看看一些主要数据。 全球用户超过 4 千万 目前 GitHub 上有超过…

COM 组件设计与应用(十一)

COM 组件设计与应用&#xff08;十一&#xff09;IDispatch 及双接口的调用作者&#xff1a;杨老师 下载源代码一、前言 前段时间&#xff0c;由于工作比较忙&#xff0c;没有能及时地写作。其间收到了很多网友的来信询问和鼓励&#xff0c;在此一并表示感谢。咳......我也需…

39. Combination Sum

文章目录1题目理解2 回溯分析3 40. Combination Sum II3.1 延续39解题思路3.2 新思路3.3 递归计数的方式4 216. Combination Sum III1题目理解 Given an array of distinct integers candidates and a target integer target, return a list of all unique combinations of ca…

第九十五期:Python帮你识破双11的套路

一年一度的“双十一”又要来了&#xff0c;很多人已经开始摩拳擦掌&#xff0c;毕竟几天之后手还在不在就不好说了。 作者&#xff1a;清风小筑 各种社交软件也是跟着遭殃&#xff0c;整天就是“来帮我一起盖楼”&#xff0c;各种字体绕过屏蔽&#xff0c;什么奇葩的脑洞也出来…

客户端独立弹出详细的实现过程

拷贝粘贴以下代码段&#xff0c;保存为html文件&#xff0c;试试看效果如何吧。。。前几天贴子没写东西就搁在上面搁了几天&#xff0c;真不好意思。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML><HEAD></HEAD>&…

Unity3D性能优化之Draw Call Batching

在屏幕上渲染物体&#xff0c;引擎需要发出一个绘制调用来访问图形API&#xff08;iOS系统中为OpenGL ES&#xff09;。每个绘制调用需要进行大量的工作来访问图形API&#xff0c;从而导致了CPU方面显著的性能开销。Unity在运行时可以将一些物体进行合并&#xff0c;从而用一个…

第九十六期:JavaScript 中的 4 个相等比较算法的介绍

JavaScript 运算中&#xff0c;一共包含 4 个相等比较算法&#xff1a;抽象相等比较&#xff1b;严格相等比较&#xff1b;SameValueZero&#xff1b;SameValue。 作者&#xff1a;zhangbao90s JavaScript 运算中&#xff0c;一共包含 4 个相等比较算法&#xff1a; 抽象相等…

第九十七期:新版Kite:实时补全代码,Python之父都发声力挺!

不久前&#xff0c;一个免费的专门针对 Python 的代码补全工具 Kite&#xff0c;有了新的动态。 作者&#xff1a;杨鲤萍 本文转自雷锋网&#xff0c;如需转载请至雷锋网官网申请授权。 不久前&#xff0c;一个免费的专门针对 Python 的代码补全工具 Kite&#xff0c;有了新…

svn 版本升级的问题

原创文章&#xff0c;转载请注明 svn本地版本由1.6升级到1.7后&#xff0c;再使用时遇到一些问题&#xff0c;这里记录一下以备忘。 升级后&#xff0c;使用任何命令 不能用了&#xff0c;提示的意思大致是本地的workcopy版本太低了&#xff08;之前用1.6版本&#xff0c;check…

[JavaME]手机申请移动分配的动态IP(3)?

获取IP后是否可以和它通讯呢&#xff1f;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />Hi&#xff0c;继续上回的讨论《[JavaME]手机是否能够申请到动态IP[2]?》。 上回说到申请动态IP是可以了&#xff0c;并且准备好了一个线…

第九十八期:TIOBE11月榜单:C、Swift、Go、D与Rust起起伏伏

TIOBE 指数并不代表语言的好坏&#xff0c;开发者可以使用该榜单检查自身的编程技能是否需要更新&#xff0c;或者在开始构建新软件时对某一语言做出选择。 作者&#xff1a;oschina TIOBE 公布了 11 月份编程语言排行榜。 本月前 20 名中有一些有趣的现象&#xff0c;先看看…

Vue 之 slot(插槽)

前言&#xff1a; vue中关于插槽的文档说明很短&#xff0c;语言又写的很凝练&#xff0c;再加上其和methods&#xff0c;data&#xff0c;computed等常用选项在使用频率、使用先后上的差别&#xff0c;这就有可能造成初次接触插槽的开发者容易产生“算了吧&#xff0c;回头再学…

第一百期:Java架构师:高并发下的流量控制

这个时候如果不做任何保护措施&#xff0c;服务器就会承受很大的处理压力&#xff0c;请求量很高&#xff0c;服务器负载也很高&#xff0c;并且当请求超过服务器承载极限的时候&#xff0c;系统就会崩溃&#xff0c;导致所有人都不能访问。 作者&#xff1a;IT技术分享 这个…

OpenCV学习笔记:矩阵的掩码操作

矩阵的掩码操作很简单。其思想是&#xff1a;根据掩码矩阵&#xff08;也称作核&#xff09;重新计算图像中每个像素的值。掩码矩阵中的值表示近邻像素值&#xff08;包括该像素自身的值&#xff09;对新像素值有多大影响。从数学观点看&#xff0c;我们用自己设置的权值&#…