跟learnjiawa一起每天一道算法编程题,既可以增强对常用API的熟悉能力,也能增强自己的编程能力和解决问题的能力,算法和数据结构,是基础中的基础,更是笔试的重中之重。
- 不积硅步,无以至千里;
- 不积小流,无以成江海。
题目描述
![7406b6aaf4c86fd394255e6cc69ef32c.png](https://i-blog.csdnimg.cn/blog_migrate/5cc86422d7d055200400c16d6251a6d5.jpeg)
剑指offer编程题第1题
剑指offer编程题第1题--二维数组中的查找,在一个二位数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
解题方法1
![5c78c272f80bcd58d4026a01958d7f7c.png](https://i-blog.csdnimg.cn/blog_migrate/46373f459edc2878fdecafad8dd55e0e.jpeg)
解题方法2
![9b683f97b36694ece228bde8d0436e43.png](https://i-blog.csdnimg.cn/blog_migrate/daedda2a70c52933cbea4e754c0e83cd.jpeg)
代码测试
![840263aeb579a4b4237ee6be025d1cf1.png](https://i-blog.csdnimg.cn/blog_migrate/dc308e272b8b7339a64526b993e5f017.jpeg)
![4be43313aa99f523dbfd7b46a899cdf0.png](https://i-blog.csdnimg.cn/blog_migrate/1485d363ad3a4d56a45ef3063c5bd32f.jpeg)
总结
从巧妙地角度来说,第二种方法显然是更胜一筹的,它充分利用了提给条件中地二维素组每一列每一行都是有序地这个条件。不过第一种解题思路显然是更加容易想到的,存在的一个小问题是,它只利用了每一个一维数组,也就是每一行的元素是有序的这一个条件,而没有利用每个一维数组的首位元素也是有序的这个条件,所以还是存在着一定的优化空间,不过这两种解题思路都是满足解题限制的,比暴力解法好了很多。
参考文献
[1]程杰. 大话数据结构. 北京:清华大学出版社, 2011.
更多
对我的文章感兴趣,点赞关注评论,也可以关注微信公众号LearnJava,持续更新中……