Cracking the coding interview--Q9.6

本文介绍了一种在行列均有序的矩阵中查找特定元素的方法。利用矩阵特性,从右上角开始逐步缩小搜索范围,最终实现高效查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

原文:

Given a matrix in which each row and each column is sorted, write a method to find an element in it.

译文:

给一个矩阵并且每行每列都是有序的,写一个方法找出它的一个元素。

解答

由于矩阵每行每列都是有序的,假设其递增,列出下面矩阵,观察其规律:

    1  5  9  13

    2  6  10 14

    3  7  11 15

    4  8  12 16

由于递增关系,矩阵的左上角是最小的,右下角是最大的,而对于右上角,假设所求元素为x,对比于右上角,若x小于右上角的数,则最后一列肯定大于x;若x大于右上角的数,则第一行的数肯定小于x,如此逐渐缩小范围比较……左下角的类似;代码如下:

class Q9_6{
	public static String searchMatrix(int[][] matrix,int m,int n,int num){
		int r=0;
		int c=n-1;
		while(r<m&&c>=0){
			if(matrix[r][c]==num) return "("+r+","+c+")";
			else if(matrix[r][c]<num) r++;
			else c--;
		}
		return "error";
	}

	public static void main(String[] args){
		int[][] matrix={{1,5,9,13},{2,6,10,14},{3,7,11,13},{4,8,12,16}};
		System.out.println(searchMatrix(matrix,4,4,12));

	}
}

---EOF---

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值