Java实现 LeetCode 74 搜索二维矩阵
2023-09-14 08:58:07 时间
74. 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:
每行中的整数从左到右按升序排列。
每行的第一个整数大于前一行的最后一个整数。
示例 1:
输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 3
输出: true
示例 2:
输入:
matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]
target = 13
输出: false
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if (matrix.length == 0 || matrix[0].length == 0)
return false;
int begin, mid, end;
begin = mid = 0;
int len1 = matrix.length, len2 = matrix[0].length;
end = len1 * len2 - 1;
while (begin < end) {
mid = (begin + end) / 2;
if (matrix[mid / len2][mid % len2] < target)
begin = mid + 1;
else
end = mid;
}
return matrix[begin / len2][begin % len2] == target;
}
}
相关文章
- Java实现 LeetCode 813 最大平均值和的分组 (DFS+DP记忆化搜索)
- Java实现 LeetCode 805 数组的均值分割 (DFS+分析题)
- Java实现 LeetCode 802 找到最终的安全状态 (DFS)
- Java实现 LeetCode 783 二叉搜索树节点最小距离(遍历)
- Java实现 LeetCode 743 网络延迟时间(Dijkstra经典例题)
- Java实现 LeetCode 719 找出第 k 小的距离对(二分搜索法+二分猜数字)
- Java实现 LeetCode 719 找出第 k 小的距离对(二分搜索法+二分猜数字)
- Java实现 LeetCode 703 数据流中的第K大元素(先序队列)
- Java实现 LeetCode 654 最大二叉树(递归)
- Java实现 LeetCode 581 最短无序连续子数组(从两遍搜索找两个指针)
- Java实现 LeetCode 581 最短无序连续子数组(从两遍搜索找两个指针)
- Java实现 LeetCode 558 四叉树交集(四叉树,第一次遇到,研究了半天)
- Java实现 LeetCode 538 把二叉搜索树转换为累加树(遍历树)
- Java实现 LeetCode 416 分割等和子集
- Java实现 LeetCode 401 二进制手表
- Java实现 LeetCode 373 查找和最小的K对数字
- Java实现 LeetCode 349 两个数组的交集
- Java实现 LeetCode 211 添加与搜索单词 - 数据结构设计
- Java实现 LeetCode 205 同构字符串
- Java实现 LeetCode 143 重排链表
- Java实现 LeetCode 123 买卖股票的最佳时机 III(三)
- Java实现 LeetCode 109 有序链表转换二叉搜索树
- Java实现 LeetCode 95 不同的二叉搜索树 II(二)
- Java实现 LeetCode 33 搜索旋转排序数组
- Java实现 LeetCode 212 单词搜索 II
- JAVA开发讲义(二)-Java程序设计之数据之谜二