摘要:题目描述在一个二维数组中每个一维数组的长度相同,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。分析例如二维数组,,如果按照常规的查找,从开始,那么,和都大于,接下来该怎么办呢这就陷入了一个无法进行下去的局面。
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
分析例如二维数组arr = [
[1,2,3,4], [5,6,7,8], [9,10,11,12]
],target=7,如果按照常规的查找,从arr0开始,那么target>arr0,arr0和arr1都大于arr0,接下来该怎么办呢?这就陷入了一个无法进行下去的局面。
所以,要在一个数组中查找某target,则有办法确定一个唯一的方向,即下一步该向左还是向右、向上还是向下。
观察题目,二维数组的每一行都按照从左向右递增,每一列都按照从上到下递增,那么如果从二维数组的左下角开始,就可以保证向上的都是小的,向右的都是大的,过程就可以进行下去了。
function Find(target, array) { if(array === null) return false; var curRow = array.length-1; var curCol = 0; while(curRow >=0 && curCol < array[0].length){ if(array[curRow][curCol] === target) return true; else if(array[curRow][curCol] > target) curRow--; else curCol++ } return false; }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/96278.html
摘要:给定表,存在函数,对任意给定的关键字值,代入函数后若能得到包含该关键字的记录在表中的地址,则称表为哈希表,函数为哈希函数。而中的对象就是基于哈希表结构,所以我们构造一个对象即可,是当前遍历到的值,是其与目标值的差。 大部分玩前端的小伙伴,在算法上都相对要薄弱些,毕竟调样式、调兼容就够掉头发的了,哪还有多余的头发再去折腾。 确实在前端中需要使用到算法的地方是比较少,但若要往高级方向发展,...
摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...
摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...
阅读 1359·2021-10-09 09:44
阅读 1442·2021-09-28 09:36
阅读 15931·2021-09-22 15:55
阅读 1241·2021-09-22 15:45
阅读 2201·2021-09-02 09:48
阅读 2783·2019-08-29 17:19
阅读 2297·2019-08-29 10:54
阅读 907·2019-08-23 18:40