74 Search a 2D Matrix
2015-10-22 20:36
323 查看
题目链接:https://leetcode.com/problems/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 Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length == 0) return false; int high = matrix.length - 1; int low = 0; int mid = 0; while(low <= high) { mid = (low + high) / 2; if(matrix[mid][0] == target) return true; else if(matrix[mid][0] > target) high = mid - 1; else low = mid + 1; } int row = mid; if(matrix[mid][0] > target) { if(mid > 0) row = mid - 1; else return false; } low = 1; high = matrix[0].length - 1; while(low <= high) { mid = (low + high) / 2; if(matrix[row][mid] == target) return true; else if(matrix[row][mid] > target) high = mid - 1; else low = mid + 1; } return false; } }
134 / 134 test cases passed. Status: Accepted Runtime: 1 ms
相关文章推荐
- postman app支持浏览器上的cookie
- POJ 2346 【DP】
- 一天一道算法题—2015-10-22(等概率的随机数)
- 什么是Coded UI
- 求质数算法的N种境界 (N > 10)
- usaco4.1.1Beef McNuggets
- 游戏引擎大全
- POJ 1861 Network Krusakl模板题 最小生成树
- 如何让新建的ruby on rails 项目打开直接时网页,显示Hello,Word,
- Linux vi 中命令
- 备份与还原esxi虚拟机
- Excel实战之POI解析
- bootloader阶段小结。。。。。。
- java开发前奏
- 安卓中layout_weight的使用
- 字符串的包含
- 简历二
- IntelliJ IDEA及 tomcat 关于项目本地部署和远程部署的相关讨论
- 2015书单
- hihoCoder 1195 高斯消元.一