在行列都排好序的矩阵中找数
来源:互联网 发布:战舰世界 战列舰 知乎 编辑:程序博客网 时间:2024/05/16 07:32
【题目】
给定一个有N×M的整型矩阵matrix和一个整数K,matrix每行每列都排好序了。
实现一个函数,判断K是否在matrix中。
【举例】
0 1 2 5
2 3 4 7
4 4 4 8
5 7 7 9
K=7,返回true;K=6,返回false
【要求】
时间复杂度O(N+M),额外控件复杂度为O(1)
【代码】
public static void main(String[] args) { int[][] arr = { {0,1,2,5,}, {2,3,4,7}, {4,4,4,8},{5,7,7,9} }; System.out.println(find1(arr,6));//false System.out.println(find1(arr,7));//true System.out.println(find1(arr,44));//false } //在行列都排好序的矩阵中找数 public static boolean find(int[][] matrix,int k){ //时间复杂度要求没达到,最坏M×N for(int h=0;h<matrix.length;h++ ){ if(matrix[h][0]<k && matrix[h][matrix[0].length-1]>k){ for(int l=0;l<matrix[0].length;l++){ if(matrix[h][l]==k){ return true; } } } } return false; } public static boolean find1(int[][] matrix,int k){ int row=0; int col=matrix[0].length-1; while(row<matrix.length && col>-1){//从右上角的数开始寻找 if(matrix[row][col]==k){ return true; } else if(matrix[row][col]>k){//右上角比k大,说明k不可能在最后一列,看左边的列 col--; } else{//右上角比k小,说明k不可能在第一行了,看下面的行 row++; } } return false; }
阅读全文
0 0
- 在行列都排好序的矩阵中找数
- 在行列都排好序的矩阵中找数
- 数组与矩阵---在行列都排好的矩阵中找数
- 在行列都排好序的矩阵中里面需找某个元素
- C 在行有序的矩阵中找出第k大的元素
- 1.7-设置矩阵0元素的所在行和列全部为0
- 在行列分别有序的二维矩阵中查找是否有给定值
- Chapter 1 | Arrays and Strings--旋转N*N矩阵的图像和处理M*N矩阵,若某位置为0则所在行和列均置0
- 找到一个二维矩阵中所有包含0的,并且把0元素所在行与列全部转换成0的算法!
- 追踪plsql的错误所在行
- 输出在行、列中最大的数
- 测试写在行内的js代码
- AI在行动:改变科学界的人工智能
- 矩阵中的“马鞍点”,即满足该元素在所在行最小,在所在列最大
- 快捷选取所在行的整行文字的方法
- 获取模版列中按钮事件所在行的关键字
- 身边的套套故事:有些人非得真在行
- C# 中 datagridview控件 在行标题显示行号的方法
- 凸包算法
- 重识java10
- JavaSpark-编程进阶-数值RDD管道基于分区操作
- Font Awesome(四)
- PHP运行机制和底层原理
- 在行列都排好序的矩阵中找数
- 自制感光法印制PCB(干货)-激光雕刻丝印层
- Font Awesome(五)
- ubuntu下安装node
- java程序员面试题之32问
- 笔记(5)
- Hadoop RPC实战
- CapsNet
- Font Awesome(六)