LeetCode *** 240. Search a 2D Matrix II
2016-04-13 21:33
417 查看
题目:
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:
Given target =
Given target =
分析:
分治+二分搜索
代码:
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.
分析:
分治+二分搜索
代码:
class Solution { public: int myt; bool searchMatrix(vector<vector<int>>& matrix, int target) { if(matrix.size()<1)return false; myt=target; return search(matrix,0,matrix.size()-1,0,matrix[0].size()-1); } bool search(vector<vector<int>>& matrix,int i1,int i2,int j1,int j2){ if(matrix[i1][j1]>myt)return false; if(i1==i2&&j1==j2){ if(matrix[i1][j1]==myt)return true; else return false; } int midi=(i1+i2)/2; int midj=(j1+j2)/2; if(matrix[midi][midj]<myt){ if(midi<i2&&midj<j2)return search(matrix,midi+1,i2,midj+1,j2)||search(matrix,i1,midi,midj+1,j2)||search(matrix,midi+1,i2,j1,midj); else if(midi<i2)return search(matrix,midi+1,i2,j1,midj); else if(midj<j2)return search(matrix,i1,midi,midj+1,j2); } else { if(midi<i2&&midi>i1&&midj>j1&&midj<j2)return search(matrix,i1,midi,j1,midj)||search(matrix,midi+1,i2,j1,midj-1)||search(matrix,i1,midi-1,midj-1,j2); else if(midi<i2&&midj>j1)return search(matrix,i1,midi,j1,midj)||search(matrix,midi+1,i2,j1,midj-1); else if(midi>i1&&midj<j2)return search(matrix,i1,midi,j1,midj)||search(matrix,i1,midi-1,midj-1,j2); else return search(matrix,i1,midi,j1,midj); } } };
相关文章推荐
- Servlet以及HttpServlet的源码分析
- 【c语言】将两个字符串连接起来,不要用strcat函数
- sublime 安装Python
- LeetCode Convert Sorted List to Binary Search Tree 解题报告
- 倒计时三天——1792:迷宫
- 倒计时三天——抓住那头牛
- python基本数据类型-元组
- HTML5_Web存储
- 水手分椰子问题
- js--编写可维护的JavaScript-1.编程风格
- Python3爬虫实战:爬取大众点评网某地区所有酒店相关信息
- 武器类
- bind 的使用
- 倒计时三天——7623:五户共井问题
- Linux内核分析——第八周学习笔记20135308
- NSURLSessionConfiguration之异步请求
- [C语言][LeetCode][237]Delete Node in a Linked List
- java 追加内容到文件末尾的几种常用方法
- hihoCoder 1037 数字三角形
- 【c语言】输出平行四边形图案