leetcode题解-74. Search a 2D Matrix && 240. Search a 2D Matrix II
来源:互联网 发布:爱知流量计 手机 编辑:程序博客网 时间:2024/06/08 11:48
74,Search a 2D Matrix 题目:
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 from left to right.The first integer of each row is greater than the last integer of the previous row.For example,Consider the following matrix:[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]Given target = 3, return true.
本题相对比较简单,因为矩阵中的元素都是有序的,所以直接做一个元素位置转换(从矩阵到数组)即可。代码入下:
public class searchMatrix { public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; int left = 0, right = matrix.length*matrix[0].length-1, num = matrix[0].length, mid; while(left <= right){ mid = (left + right)/2; if(matrix[mid/num][mid%num] == target) return true; else if(matrix[mid/num][mid%num] > target) right = mid - 1; else left = mid + 1; } return false; } //还可以先遍历每行第一个元素,找到第一个比target大的,说明再起上一行。然后再遍历改行即可。}
240,Search a 2D Matrix II 题目如下:
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.
相对于上一题,本题矩阵中的元素有序性变弱,但是我们仍然可以找到关键元素所在,那就是右上角的元素,比整行别的元素都大,比整列别的元素都小,所以根据该元素进行判断即可。算法的时间复杂度是O(m+n).代码入下:
public class searchMatrix2 { public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length < 1 || matrix[0].length < 1) return false; int row = 0, col = matrix[0].length-1; while(row < matrix.length && col >= 0){ if(matrix[row][col] == target) return true; else if(matrix[row][col] > target) col --; else row ++; } return false; }}
阅读全文
0 0
- leetcode题解-74. Search a 2D Matrix && 240. Search a 2D Matrix II
- Leetcode 74. Search a 2D Matrix & 240. Search a 2D Matrix II
- LeetCode题解:Search a 2D Matrix
- LeetCode题解:Search a 2D Matrix
- LeetCode 题解(149): Search a 2D Matrix II
- #leetcode#Search a 2D Matrix II
- [LeetCode] Search a 2D Matrix II
- leetcode: Search a 2D Matrix II
- leetcode - Search a 2D Matrix II
- [leetcode] Search a 2D Matrix II
- 【leetcode】Search a 2D Matrix II
- Leetcode: Search a 2D Matrix II
- LeetCode Search a 2D Matrix II
- [Leetcode]Search a 2D Matrix II
- [LeetCode]Search a 2D Matrix II
- LeetCode Search a 2D Matrix II
- [LeetCode]Search a 2D Matrix II
- LeetCode || Search a 2D Matrix II
- (String)java中字符串的比较
- JAVA枚举类的基本使用
- hud-1874-畅通工程续(floyd)最短路入门
- RocketMQ源码解析-Producer消息发送
- IntelliJ IDEA开发Java web项目,设置JSP代码自动补全的方法
- leetcode题解-74. Search a 2D Matrix && 240. Search a 2D Matrix II
- JavaWeb学习(二)
- Windows10/7 + Visual Studio 2013 + PCL1.8.0
- 汇编语言
- java连接mysql数据库实现增删查改
- Css中的#css和.css的区别
- 解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)
- 【Java】NoSuchMethodError 解决通用方法
- 求一个序列中逆序对的数目