java 二维数组_Java版剑指offer编程题第1题--二维数组中的查找

跟learnjiawa一起每天一道算法编程题,既可以增强对常用API的熟悉能力,也能增强自己的编程能力和解决问题的能力,算法和数据结构,是基础中的基础,更是笔试的重中之重。

  • 不积硅步,无以至千里;
  • 不积小流,无以成江海。

题目描述

7406b6aaf4c86fd394255e6cc69ef32c.png

剑指offer编程题第1题


剑指offer编程题第1题--二维数组中的查找,在一个二位数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

解题方法1

5c78c272f80bcd58d4026a01958d7f7c.png

解题方法2

9b683f97b36694ece228bde8d0436e43.png

代码测试

840263aeb579a4b4237ee6be025d1cf1.png
4be43313aa99f523dbfd7b46a899cdf0.png

总结

从巧妙地角度来说,第二种方法显然是更胜一筹的,它充分利用了提给条件中地二维素组每一列每一行都是有序地这个条件。不过第一种解题思路显然是更加容易想到的,存在的一个小问题是,它只利用了每一个一维数组,也就是每一行的元素是有序的这一个条件,而没有利用每个一维数组的首位元素也是有序的这个条件,所以还是存在着一定的优化空间,不过这两种解题思路都是满足解题限制的,比暴力解法好了很多。

参考文献

[1]程杰. 大话数据结构. 北京:清华大学出版社, 2011.

更多

对我的文章感兴趣,点赞关注评论,也可以关注微信公众号LearnJava,持续更新中……

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值