[Leetcode]Search a 2D matrix
来源:互联网 发布:访客网络影响网速吗 编辑:程序博客网 时间:2024/06/06 18:44
[timu]
Search a 2D Matrix
Total Accepted: 52191 Total Submissions: 164580Write 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
.
in fact, I think it is a 2d binary search, first binary search line and locate the line.
second, binary search the line and find the target.
[daima]
my accepted solution:
public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length == 0) return false; int left = 0; int right = matrix.length - 1; while(left <= right){ int mid = left+ (right - left)/2; int begin = matrix[mid][0]; int end = matrix[mid][matrix[0].length - 1]; if(target < begin){ right = mid - 1; }else if(target > end){ left = mid + 1; }else{ return binarySearch(target, matrix[mid]); } } return false; } private boolean binarySearch(int target, int[] nums){ if(nums==null|| nums.length == 0) return false; int start = 0; int end = nums.length - 1; while(start<=end){ int mid = start + (end - start)/2; if(target == nums[mid]) return true; else if(target > nums[mid]){ start = mid + 1; }else{ end = mid - 1; } } return false; }
or zhijie fa:
public boolean searchMatrix(int[][] matrix, int target) { int row_num = matrix.length; int col_num = matrix[0].length; int begin = 0, end = row_num * col_num - 1; while(begin <= end){ int mid = (begin + end) / 2; int mid_value = matrix[mid/col_num][mid%col_num]; if( mid_value == target){ return true; }else if(mid_value < target){ //Should move a bit further, otherwise dead loop. begin = mid+1; }else{ end = mid-1; } } return false;}
0 0
- [leetcode][Search] Search a 2D Matrix
- LeetCode: Search a 2D Matrix
- LeetCode Search a 2D Matrix
- [Leetcode] Search a 2D Matrix
- LeetCode : Search a 2D Matrix
- [LeetCode] Search a 2D Matrix
- Leetcode 74 Search a 2D Matrix
- leetcode 90: Search a 2D Matrix
- [LeetCode]Search a 2D Matrix
- [Leetcode] Search a 2-D matrix
- [Leetcode]Search a 2D Matrix
- [leetcode]Search a 2D Matrix
- LeetCode-Search a 2D Matrix
- [leetcode] Search a 2D Matrix
- LeetCode - Search a 2D Matrix
- LeetCode:Search a 2D Matrix
- LeetCode 74: Search A 2D Matrix
- leetcode之Search a 2D Matrix
- C#Memory Management for Unity Developers (part 2 of 3)
- C# Memory Management for Unity Developers (part 3 of 3)
- 25 条提高 iOS App性能的技巧和诀窍
- 使用Bootstrap Tabs选项卡Ajax加载数据的实现以及遇到的问题;
- android自定义exittext和button
- [Leetcode]Search a 2D matrix
- HDU 5071 Chat (2014ICPC鞍山赛区现场赛B题)
- LeetCode_DP_Ugly Number II
- LeetCode_Math_Ugly Number
- LeetCode_DP_Triangle
- Gym 100341C AVL TREE(NTT快速数论变换)
- 基于Java实现的简单且通用的分页实现封装 <Pagiation>
- git 常用命令
- cocos2d3.8升级后狂闪退