LeetCode(剑指 Offer)- 04. 二维数组中的查找
Posted 放羊的牧码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 04. 二维数组中的查找相关的知识,希望对你有一定的参考价值。
题目链接:点击打开链接
题目大意:略
解题思路
相关企业
- 字节跳动
- 微软(Microsoft)
- 谷歌(Google)
- 苹果(Apple)
- 亚马逊(Amazon)
- 甲骨文(Oracle)
- 腾讯(Tencent)
- 恒生电子股份有限公司
AC 代码
- Java
// 解决方案(1)
class Solution
public boolean findNumberIn2DArray(int[][] matrix, int target)
int i = matrix.length - 1, j = 0;
while(i >= 0 && j < matrix[0].length)
if(matrix[i][j] > target) i--;
else if(matrix[i][j] < target) j++;
else return true;
return false;
// 解决方案(2)
class Solution
public boolean findNumberIn2DArray(int[][] matrix, int target)
int rowLen = matrix.length;
if (rowLen == 0 || matrix[0].length == 0)
return false;
// 每 row 判断是否可能执行, 如果可以进行二分查找
for (int i = 0; i < matrix.length; i++)
if (target < matrix[i][0] || target > matrix[i][matrix[i].length - 1])
continue;
int idx = find(matrix[i], target);
if (matrix[i][idx] == target)
return true;
return false;
private int find(int[] arr, int target)
int l = 0, r = arr.length - 1;
while (l <= r)
int mid = (l + r) / 2;
if (arr[mid] == target)
return mid;
else if (arr[mid] < target)
l = mid + 1;
else
r = mid - 1;
return l - 1;
- C++
class Solution
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target)
int i = matrix.size() - 1, j = 0;
while(i >= 0 && j < matrix[0].size())
if(matrix[i][j] > target) i--;
else if(matrix[i][j] < target) j++;
else return true;
return false;
;
以上是关于LeetCode(剑指 Offer)- 04. 二维数组中的查找的主要内容,如果未能解决你的问题,请参考以下文章
剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)
剑指 Offer(第 2 版)完整题解笔记 & C++代码实现(LeetCode版)