LeetCode 74(Search a 2D Matrix)Java
来源:互联网 发布:windows media 解码器 编辑:程序博客网 时间:2024/06/09 17:58
原题:Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties
1. Integers in each row are sorted from left to right.
2. The first integer of each row is greater than the last integer of the previous row.
给定一个m x n的矩阵,该矩阵满足如下性质:
1. 矩阵每一行的元素已经按从小到大的顺序排好序;
2. 矩阵每一行的任意一个元素都大于它上面行的任意一个元素;
思路:
面对一个在横向和纵向都是排好序的矩阵,我们不必采用依次查找的算法(复杂度O(m*n)),可以采用两次二分法,先找到对应行的索引,再在该行内进行二分查找(复杂度O(logm)*O(logn)),判断该数是否存在。
代码:
/*Author:JassyTime:2016/11/30Number:LeetCode 74Resource:https://leetcode.com/problems/search-a-2d-matrix/Result:ACConclusion:*/public class Solution { boolean flag=false; public boolean searchMatrix(int[][] matrix, int target) { if(matrix.length==0){ return false; } int[] index=new int[matrix.length]; for(int i=0;i<index.length;i++){ index[i]=matrix[i][0]; } int count1=binarySearch(index,target); int count2=binarySearch(matrix[count1],target); if(flag==true){ return true; }else{ return false; } } int binarySearch(int[] nums,int target){ int left=0; int right=nums.length-1; int mid=0; while(left<=right){ mid=(left+right)/2; if(target>nums[mid]){ left=mid+1; }else if(target<nums[mid]){ right=mid-1; }else{ flag=true; return mid; } } return (left+right)/2; }}
0 0
- LeetCode 74(Search a 2D Matrix)Java
- [Leetcode] Search a 2D Matrix (Java)
- [LeetCode][Java] Search a 2D Matrix
- leetcode:Search a 2D Matrix 【Java】
- Search a 2D Matrix leetcode java
- LeetCode 74 Search a 2D Matrix with java solution
- Leetcode 74 Search a 2D Matrix
- LeetCode 74: Search A 2D Matrix
- LeetCode 74 Search a 2D Matrix
- [leetcode 74] Search a 2D Matrix
- [LeetCode 74]Search a 2D Matrix
- leetcode || 74、Search a 2D Matrix
- leetcode-74 Search a 2D Matrix
- Leetcode[74]-Search a 2D Matrix
- 【Leetcode】Search a 2D Matrix #74
- LeetCode(74) Search a 2D Matrix
- Leetcode #74 Search a 2D Matrix
- Leetcode #74 Search a 2D Matrix
- Intent之对象传递(Serializable传递对象和对象集合)
- 一些SQL语句
- 2016年终总结
- 工程师成长之路:工作1-3年工程师如何突破瓶颈期
- 第十四周OJ项目D求矩阵
- LeetCode 74(Search a 2D Matrix)Java
- 深入理解linux启动过程
- URLEncode和Decode算法代码
- 第十四周oj题目对角线元素之和
- 有关野指针
- oracle 时间函数(sysdate)
- 块设备剖析之块设备注册 - add_disk()函数解析
- 【Java学习之代码学习】 Prog09_整数分解因式
- MVC框架的地址重写——MVC中默认的地址重写