对于一个m*n的整数矩阵,其中每一行和每一列的元素都按升序排列,设计一个高效的算法判断一个数值是否存在,并给出位置
来源:互联网 发布:朋友圈图片制作软件 编辑:程序博客网 时间:2024/05/16 09:48
package com.huanchuang.arvin.vo;
public class Finder {
private String findElement(int[][] matrix, int target) {
int row = 0, column = 0;
// 只要行还没有达到最大值就继续执行
while (row < matrix.length) {
int colMax = matrix[row].length - 1;// 用于获取矩阵每一行的最大值
// 因为是行和列都是赠序的,只要指定的数在每一行的最小值和最大值之间,就返回true
if (matrix[row][column] <= target && matrix[row][colMax] >= target) {
for (int i = 0; i < matrix[row].length; i++) {
if (matrix[row][i] == target) {
return "matrix[" + row + "][" + i + "]";
}
}
} else {// 否则的话就自动去下一行进行比较
row++;
}
}
return "matrix[-1][-1]";// 返回-1表示不存在
}
public static void main(String[] args) {
int matrix[][] = { { 1, 2, 3 }, { 4, 5 }, { 7, 8, 9 } };
Finder finder = new Finder();
String location = finder.findElement(matrix, 6);
System.out.println("位置" + location);
}
}
public class Finder {
private String findElement(int[][] matrix, int target) {
int row = 0, column = 0;
// 只要行还没有达到最大值就继续执行
while (row < matrix.length) {
int colMax = matrix[row].length - 1;// 用于获取矩阵每一行的最大值
// 因为是行和列都是赠序的,只要指定的数在每一行的最小值和最大值之间,就返回true
if (matrix[row][column] <= target && matrix[row][colMax] >= target) {
for (int i = 0; i < matrix[row].length; i++) {
if (matrix[row][i] == target) {
return "matrix[" + row + "][" + i + "]";
}
}
} else {// 否则的话就自动去下一行进行比较
row++;
}
}
return "matrix[-1][-1]";// 返回-1表示不存在
}
public static void main(String[] args) {
int matrix[][] = { { 1, 2, 3 }, { 4, 5 }, { 7, 8, 9 } };
Finder finder = new Finder();
String location = finder.findElement(matrix, 6);
System.out.println("位置" + location);
}
}
0 0
- 对于一个m*n的整数矩阵,其中每一行和每一列的元素都按升序排列,设计一个高效的算法判断一个数值是否存在,并给出位置
- 给定M*N矩阵,每一行、每一列都按升序排列,判断是否存在某个元素。
- 在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在
- 设M 是一个m×n 的矩阵,其中每行的元素从左到右单增有序,每列的元素从上到下单增有序。 给出一个分治算法计算出给定元素x 在M 中的位置或者表明x 不在M 中。分析算法的时间复杂性。
- 输入一个奇数n,打印出一个n*n的矩阵,每个数字是从1到n*n的整数,要使每一行,每一列的数字之和都相等
- python求解矩阵搜索问题,矩阵中每一行和第一列都是递增的 给定一个元素查找矩阵中是否存在该元素
- 在一个每一行从左到右递增每一列从上到下递增的二维数组中查找一个整数是否存在——3
- 已知一个矩阵 A(m*n) 的元素每行每列都按从小到大有序, 试设计一个算法判断任一给定值 k 是否在矩阵 A(m*n) 中
- 请写出一个程序,对于一个m行,m列的(1<m<10)的方阵,求其每一行,每一列及 主对角线元素之和,最后按照从大到小的顺序依次输出
- JAVA之建立一个m行n列的矩阵,并找出其中最小的元素所在的行和列
- 给一个奇数 N(1<N<2000),把从 1 到 N 2 的整数排成一个 N 行 N 列的方阵,使 该方阵的每一行、列和对角线上的 N 个数的和都相等
- 算法习题45:对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一;;;一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 1到N的整数中,随机选出M个并升序排列的较高效算法
- 给出一个实数集合和一个实数,怎样判断集合中是否存在两个和等于该实数的元素
- 算法导论 2.3-7 给出一个运行时间为⊙(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素
- 题目:请给出一个运行时间为Θ(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数x时,判断出S中是否存在有两个其和等于x的元素。
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一, 现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到。
- 对于一个整数矩阵,存在一种运算,对矩阵中任意元素加一时,需要其相邻(上下左右)某一个元素也加一,现给出一正数矩阵,判断其是否能够由一个全零矩阵经过上述运算得到
- A31S红外遥控
- Change Not For Replication Value for SQL Server Identity Columns
- MVP架构快速搭建Dagger
- 一名女产品经理的工作状态
- POJ 1125 Stockbroker Grapevine
- 对于一个m*n的整数矩阵,其中每一行和每一列的元素都按升序排列,设计一个高效的算法判断一个数值是否存在,并给出位置
- Eclipse 安装插件一直卡顿在"Calculating requirements and dependencies"不动
- swift中根据宽度计算文字高度的方法的封装
- 数据库连接池-连接的关闭内幕
- html img src 图片路径不存在或无效
- Oracle中dual表的用途介绍
- FFMPEG 实现 YUV,RGB各种图像原始数据之间的转换(swscale)
- Oracle数据库-2
- 执行mvn 报错 source-1.5 中不支持 diamond运算符