74.搜索二维矩阵

时游小于 1 分钟LeetCode

74.搜索二维矩阵

/*
 * @lc app=leetcode.cn id=74 lang=typescript
 *
 * [74] 搜索二维矩阵
 */

// @lc code=start
function searchMatrix(matrix: number[][], target: number): boolean {
	let l = 0,
		r = matrix.length - 1;
	while (l <= r) {
		let mid = Math.floor((l + r) / 2);
		let currentRow = matrix[mid];
		if (currentRow[currentRow.length - 1] < target) {
			l = mid + 1;
		} else if (currentRow[0] > target) {
			r = mid - 1;
		} else {
			// target在当前行
			let l1 = 0,
				r1 = currentRow.length - 1;
			while (l1 <= r1) {
				let mid1 = Math.floor((l1 + r1) / 2);
				if (currentRow[mid1] > target) {
					r1 = mid1 - 1;
				} else if (currentRow[mid1] < target) {
					l1 = mid1 + 1;
				} else {
					return true;
				}
			}
			break;
		}
	}
	return false;
}

console.log(
	searchMatrix(
		[
			[1, 3, 5, 7],
			[10, 11, 16, 20],
			[23, 30, 34, 60],
		],
		6
	)
);

// @lc code=end

上次编辑于:
贡献者: 15327360835
Loading...