240. Search a 2D Matrix II
来源:互联网 发布:js atan2函数 编辑:程序博客网 时间:2024/06/05 15:58
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
- Integers in each row are sorted in ascending from left to right.
- Integers in each column are sorted in ascending from top to bottom.
For example,
Consider the following matrix:
[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]
Given target = 5
, return true
.
Given target = 20
, return false
.
题解:
这一类m*n矩阵可以横着看做是m个有序链表,竖着是n个有序链表。从右上角开始搜索,相当于用横着的每个链表的最大数同时也是竖着的链表的最小数与target比较,假如target大于这个数,说明它大于当前这一行的链表的最大数,于是row++,往下检索下一行。假如target小于这个数,说明它小于当前这一列链表的最小数,于是col--,往左检索下一列。
代码:
时间复杂度为O(m+n).
public class Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length == 0) { return false; } int n = matrix.length; int m = matrix[0].length; int row = 0; int col = m-1; while(col >= 0 && row < n) { if(matrix[row][col] == target) { return true; } else if(matrix[row][col] > target) { col--; } else { row++; } } return false; }}
0 0
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240. Search a 2D Matrix II
- 240.Search a 2D Matrix II
- ElasticSearch+Kibana+Packetbeat
- Scrum敏捷项目管理
- WebPack 简明学习教程
- 218. The Skyline Problem
- Troubleshooting OpenStack Bug- 每天5分钟玩转 OpenStack(162)
- 240. Search a 2D Matrix II
- 机器学习实战第二章,kNN
- 安装vue.js的方法,安装nodejs,安装cnpm
- 【哈佛商评】人工智能的创造力总会有极限
- gVim, gVim Easy, gVim Read-only 的简单区别
- Leetcode 338 Counting Bits
- Java 中继承之后同名静态变量的问题分析
- C++中 虚函数及包含多态的实现
- 背包九讲详解