力扣240(java&python)-搜索二维矩阵 II(中等)
题目:
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
示例 1:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true
示例 2:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false
提示:
- m == matrix.length
- n == matrix[i].length
- 1 <= n, m <= 300
- -109 <= matrix[i][j] <= 109
- 每行的所有元素从左到右升序排列
- 每列的所有元素从上到下升序排列
- -109 <= target <= 109
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/search-a-2d-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
【二分查找】
这题与 74.搜索二维矩阵 区别在于 不能保证每一行的第一个整数大于上一行的最后一个整数,故可以以行为基准,先遍历一行,再从这一行去遍历每一个数字,从而判断出该行是否存在target,不存在又继续遍历下一行的每个数字。(或者以列为基准,先遍历一列,再从这一列去遍历每个数字,从而判断出该列是否存在target,不存在又继续遍历下一列)行:martrix.length,列:martix[0].length
java代码(left < right)--- 以行为基准:
1 class Solution {
2 public boolean searchMatrix(int[][] matrix, int target) {
3 //n:行;m:列
4 int n = matrix.length, m = matrix[0].length;
5 for (int i = 0; i < n; i++){
6 int left = 0, right = m-1;
7 while (left < right){
8 int mid = left + (right - left + 1) / 2;
9 if (target >= matrix[i][mid]){
10 left = mid;
11 }else{
12 right = mid - 1;
13 }
14 }
15 if (matrix[i][left] == target) return true;
16 }
17 return false;
18 }
19 }

python3代码(left <= right)--- 以列为基准:
1 class Solution:
2 def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
3 n, m = len(matrix), len(matrix[0])
4 # 以列为基准
5 for i in range(m):
6 left , right = 0, n - 1
7 while left <= right:
8 mid = left + (right - left) // 2
9 if target > matrix[mid][i]:
10 left = mid + 1
11 elif target < matrix[mid][i]:
12 right = mid - 1
13 else:
14 return True
15 if target == matrix[right][i]:
16 return True
17 return False

力扣240(java&python)-搜索二维矩阵 II(中等)的更多相关文章
- Java实现 LeetCode 240 搜索二维矩阵 II(二)
240. 搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. ...
- LeetCode 240. 搜索二维矩阵 II(Search a 2D Matrix II) 37
240. 搜索二维矩阵 II 240. Search a 2D Matrix II 题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性 ...
- Leetcode之二分法专题-240. 搜索二维矩阵 II(Search a 2D Matrix II)
Leetcode之二分法专题-240. 搜索二维矩阵 II(Search a 2D Matrix II) 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵 ...
- Leetcode 240.搜索二维矩阵II
搜索二维矩阵II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有 ...
- lintcode:搜索二维矩阵II
题目 搜索二维矩阵 II 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没 ...
- LintCode-38.搜索二维矩阵 II
搜索二维矩阵 II 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数. 这个矩阵具有以下特性: 每行中的整数从左到右是排序的. 每一列的整数从上到下是排序的. 在每一行或每一列中没有重复 ...
- leetcode-240搜索二维矩阵II
搜索二维矩阵II class Solution: def searchMatrix(self, matrix, target): """ :type matrix: Li ...
- 240. 搜索二维矩阵 II
二维数组搜索 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 ...
- 【LeetCode】 240. 搜索二维矩阵 II
题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 mat ...
- leetcode240 搜索二维矩阵 II
题目: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以下特性: 每行的元素从左到右升序排列. 每列的元素从上到下升序排列. 示例: 现有矩阵 ma ...
随机推荐
- Vite + Vue3.0 项目初始化
主要是冷启动,实际中项目非常庞大,现在1w的笔记本,每次冷启动,也得等一下,所以准备转型 Vite+Vue3.0,毕竟Vite不支持Vue2.0,这就只能下个项目的时候再启动了. $ npm init ...
- Linux 常见缩写命令英文全称
linux 命令参考Linux 命令大全: https://man.linuxde.net/ awk = "Aho Weiberger and Kernighan" 三个作者的姓的 ...
- 精通 Grails: 用 Groovy 服务器页面(GSP)改变视图
Groovy 服务器页面(Groovy Server Pages,GSP)将 Web 置于 Grails Web 框架之内.在 精通 Grails 系列的第三期中,Scott Davis 介绍了如何使 ...
- 详解SSL证书系列(6)了解HTTP及网络基础
使用HTTP协议访问Web 你知道当我们在网页浏览器(比如Chrome)的地址栏中输入URL时,Web网页是如何呈现的吗? Web页面当然不会凭空显示出来.根据Web浏览器地址栏中指定的URL,W ...
- Avalonia发布MacOS运行程序
1 打开xxx.csproj项目文件,添加Dotnet.Bundle包: <PackageReference Include="Dotnet.Bundle" Version= ...
- QT之数据显示
引言 目前,为了提高数据校对的效率,使用合理的显示工具完成具体的数据处理,可以加速设计中调试的速度,这也是自行设计上位机的意义所在.数据处理在LabVIEW中是比较简单的,直接调用即可.在QT中可能需 ...
- KingbaseES 执行计划常见节点介绍
KingbaseES中explain命令来查看执行计划时最常用的方式.其命令格式如下: explain [option] statement 其中option为可选项,常用的是以下5种情况的组合: a ...
- KingbaseES 避免表的重写与数据类型二进制兼容
一.关于KingbaseES变更表结构表的重写: 1.修改表结构可能会导致表进行重写(表OID发生变化). 2.修改表结构带有索引或者字段类型长度或者精度操作时,会触发索引重建. 3.不修改列内容且旧 ...
- #01背包#洛谷 2340 [USACO03FALL]Cow Exhibition G
题目 有\(n\)个物品,对于第\(i\)个物品, 有两种属性,第一种属性为\(x_i\),第二种属性为\(y_i\) 问选择若干个物品使得\(\sum{x_j}\geq 0\)且\(\sum{y_j ...
- #搜索,容斥#洛谷 2567 [SCOI2010]幸运数字
题目 问区间\([l,r],l,r\leq 10^{10}\)中有多少个数是 数位由6或8组成的数的倍数(包括本身) 分析 数位由6或8组成的数最多有两千多种, 这可以直接一遍暴搜得到 对于区间\([ ...