剑指offer|剑指offer | 二维数组中的查找
二维数组中的查找
【剑指offer|剑指offer | 二维数组中的查找】在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个二维数组,判断数组中是否含有该整数
暴力法
思路:直接遍历二维数组中的每行每列,查找数字
时间复杂度:O(n^2)
public class FindInPartiallySortedMatrix {// 暴力查询 O(n^2)
public boolean findViolence(int[][] array, int n) {
for (int i = 0;
i < array.length;
i++) {
for (int j = 0;
j < array[i].length;
j++) {
if (n == array[i][j]) {
return true;
}
}
}
return false;
}
}
二分法 思路:利用题目中给出,从左到右,从上到下递增的顺序排序,可以考虑二分法
时间复杂度:
O(nlogn)
public class FindInPartiallySortedMatrix {public boolean find(int[][] array, int n) {
if (array.length > 0 && array[0].length > 0) {
return findDetail(array, array.length, array[0].length, n);
}
return false;
}private boolean findDetail(int[][] array, int rows, int columns, int n) {
if (Optional.ofNullable(array).isPresent() && rows > 0 && columns > 0) {
int row = 0;
int column = columns - 1;
while (row < rows && column >= 0) {
int current = array[row][column];
if (n == current) {
return true;
} else if (n < current) {
column--;
} else {
row++;
}
}
}
return false;
}
}
推荐阅读
- 分享!如何分分钟实现微信扫二维码调用外部浏览器打开指定页面的功能
- 20180531去二维火学习完给股东的分享
- 剑指|剑指 Offer 13. 机器人的运动范围(dfs,bfs)
- Spring|Spring 框架之 AOP 原理剖析已经出炉!!!预定的童鞋可以识别下发二维码去看了
- 剑指offer60.n个骰子的点数
- 剑指offer——最小的K个数
- Android|年后备战金三银四(Android面试吃透这一篇就没有拿不到的offer......)
- 剑指黄昏
- Vue+jszip+file-saver|Vue+jszip+file-saver 实现el-table中qrcode生成的二维码图片批量打包成zip下载
- 剑指offer15.二进制中1的个数