二维矩阵搜索问题——小米面试题
二维矩阵搜索问题——小米面试题
二维矩阵搜索问题——小米面试题编写一个高效的算法来搜索整数矩阵target中的值。其中:每行中的整数按从左到右的升序排序,每列中的整数按从上到下的升序排序。
示例:
输入:矩阵 = [[1,4,7,11,15],[2,5,8,12,19],[2,5,8,12,19],[10,1,14,17, 24],[18,21,2,26,0]],
target = 5
二维矩阵搜索问题——小米面试题
编写一个高效的算法来搜索整数矩阵target中的值。其中:每行中的整数按从左到右的升序排序,每列中的整数按从上到下的升序排序。 示例: 输入:矩阵 = [[1,4,7,11,15],[2,5,8,12,19],[2,5,8,12,19],[10,1,14,17, 24],[18,21,2,26,0]], target = 5 输出: true
算法思路,这个题有两个算法思路,一个是把二维的变成一维的,然后再进行二分查,时间复杂度是O(nlogn)
另一个方法就是寻规律,因为这个矩阵是从左到右,从上到下都是递增的,所以可以采用,我们从这个矩阵的右上角开始,如果当前位置的值小于目标值,那么我们向下移动一行;如果当前位置的值大于目标值,那么我们向左移动一列。我们不断重复这一过程,直到到目标值,或者搜索区域为空,时间复杂度的话为O(m + n);
- c++
/*采用vector的写法*/
#include<bits/stdc++.h>
using namespace std;
bool searchMatrix(vector<vector<int>>& matrix, int target)
{
if (() || matrix[0].empty()) return false;
int row = 0;
int col = matrix[0].size() - 1;
while(row < (int)matrix.size() && col >= 0){
if (matrix[row][col] == target) return true;
else if (matrix[row][col] < target) row ++;
else col --;
}
return false;
}
int main()
{
vector<vector<int>> matrix = {
{1,4,7,11,15},
{2,5,8,12,19},
{,6,9,16,22},
{10,1,14,17,24},
{18,21,2,26,0}
};
int target = 5;
bool result = searchMatrix(matrix, target);
cout << (result ? "true" : "false") << endl;
return 0;
}
/*采用数组的写法*/
#include <iostream>
using namespace std;
bool searchMatrix(int matrix[5][5], int target, int rows, int cols) {
int row = 0;
int col = cols - 1;
while (row < rows && col >= 0) {
if (matrix[row][col] == target) {
return true;
} else if (matrix[row][col] < target) {
row++;
} else {
col--;
}
}
return false;
}
int main() {
int matrix[5][5] = {
{1,4,7,11,15},
{2,5,8,12,19},
{,6,9,16,22},
{10,1,14,17,24},
{18,21,2,26,0}
};
int target = 5;
bool result = searchMatrix(matrix, target, 5, 5);
cout << (result ? "true" : "false") << endl;
return 0;
}
- Java
/*数组版*/
import java.util.*;
class Main {
public static boolean searchMatrix(int[][] matrix, int target) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return false;
}
int row = 0;
int col = matrix[0].length - 1;
while (row < matrix.length && col >= 0) {
if (matrix[row][col] == target) {
return true;
} else if (matrix[row][col] < target) {
row++;
} else {
col--;
}
}
return false;
}
public static void main(String[] args) {
int[][] matrix = {
{1, 4, 7, 11, 15},
{2, 5, 8, 12, 19},
{, 6, 9, 16, 22},
{10, 1, 14, 17, 24},
{18, 21, 2, 26, 0}
};
int target = 5;
boolean result = searchMatrix(matrix, target);
println(result ? "true" : "false");
}
}
/*ArrayList版*/
import java.util.*;
class Main {
public static boolean searchMatrix(ArrayList<ArrayList<Integer>> matrix, int target) {
if (matrix == null || matrix.size() == 0 || matrix.get(0).size() == 0) {
return false;
}
int row = 0;
int col = matrix.get(0).size() - 1;
while (row < matrix.size() && col >= 0) {
if (matrix.get(row).get(col) == target) {
return true;
} else if (matrix.get(row).get(col) < target) {
row++;
} else {
col--;
}
}
return false;
}
public static void main(String[] args) {
ArrayList<ArrayList<Integer>> matrix = new ArrayList<>();
matrix.add(new ArrayList<>(Arrays.asList(1, 4, 7, 11, 15)));
matrix.add(new ArrayList<>(Arrays.asList(2, 5, 8, 12, 19)));
matrix.add(new ArrayList<>(Arrays.asList(, 6, 9, 16, 22)));
matrix.add(new ArrayList<>(Arrays.asList(10, 1, 14, 17, 24)));
matrix.add(new ArrayList<>(Arrays.asList(18, 21, 2, 26, 0)));
int target = 5;
boolean result = searchMatrix(matrix, target);
println(result ? "true" : "false");
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent 删除搜索算法intmatrixtarget #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-20 09:28:59
推荐阅读
留言与评论(共有 13 条评论) |
本站网友 北京演出公司 | 0秒前 发表 |
或者搜索区域为空 | |
本站网友 吴作人 | 1分钟前 发表 |
19))); matrix.add(new ArrayList<>(Arrays.asList( | |
本站网友 横县二手房 | 9分钟前 发表 |
14 | |
本站网友 如何淡斑祛斑 | 8分钟前 发表 |
24))); matrix.add(new ArrayList<>(Arrays.asList(18 | |
本站网友 曹臻 | 1分钟前 发表 |
19] | |
本站网友 昆明团购网站大全 | 15分钟前 发表 |
1 | |
本站网友 怎样用卷发棒卷头发 | 14分钟前 发表 |
5); cout << (result ? "true" | |
本站网友 根目录下 | 14分钟前 发表 |
11 | |
本站网友 潮州二手房 | 11分钟前 发表 |
0]] | |
本站网友 八千八 | 26分钟前 发表 |
{ | |
本站网友 精算师报考条件 | 4分钟前 发表 |
{10 | |
本站网友 广东省机械设备成套局 | 0秒前 发表 |
{10 |