JavaScript--《剑指offer》-题一
来源:互联网 发布:java中cgi是什么 编辑:程序博客网 时间:2024/06/08 19:59
原题:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
我的解决方案,通过了牛客网测试,但不一定是最好的方案,还希望大家指教。
function Find(target, array) { var row=array.length-1,j,i; for(i=row,j=0;i>=0&&j<=array[i].length-1;){ if(target>array[i][j]){ j++; continue; } else if( target<array[i][j]){ i--; continue; }else{ return true; } } return false; }
分析题目:从题上看,这是一个有一定排序的数组,一排右边最大,一行最上边数最小,所以我们可以利用这个特征来遍历数组比较我们输入的数,已达到遍历次数最少,所以我们可以从左下或者右上开始遍历,我这里是采用从左下开始遍历的。
知识点:
1:二维数组arr[i][j],i表示行,j表示列。二维数组的length等于列数(j)。可以用console.log()查看二维数组矩阵排列形式,以及length长度。
2:for()循坏条件的使用
for (语句 1; 语句 2; 语句 3){被执行的代码块}
语句1:在循环(代码块)开始前执行
语句2:定义运行循环(代码块)的条件
语句3:在循环(代码块)已被执行之后执行
如常见的for(var i=0; i<10; i++)
要是我们只是想输出1~10那么还可以这样写:for(var i=10; i-- ;)
我们可能会问为什么会这么写,条件都没有写完。其实不然,在语句2中,加的判断条件,实际是为了让它判断为true,也就是说只要是被判断为true的,此循环就还是会执行,在js中0,null,undefined,false,”,”“作为条件判断时,结果都是false,也就是说当 i 减到0时,就是false,循环也就终止。但是循环条件中的语句不是必选的,可根据情况选择。
阅读全文
0 0
- JavaScript--《剑指offer》-题一
- 剑指offer题一
- JavaScript--《剑指offer》-题二
- JavaScript--《剑指offer》-题四
- JavaScript--《剑指offer》-题二十七
- javascript 剑指offer
- 剑指offer JavaScript实现
- 剑指offer--JavaScript版
- 剑指offer经典编程题(一)
- 《剑指Offer》做题总结(一)
- 剑指offer 一
- 剑指offer(一)
- 剑指offer(一)
- 剑指offer读书笔记(一)
- 剑指offer笔记(一)
- 剑指offer题目练习一
- 剑指offer面试题(一)
- 剑指offer题目汇总(一)
- Uva 725 Division (技巧暴力)
- Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
- 1212: [视频]【计算几何】判断线段相交(跨立实验)
- 有没有会做c++计算器的
- 登录注册并记住状态
- JavaScript--《剑指offer》-题一
- 在并发环境下,多用户注册防止用户名重复的问题
- 第六天-python列表、元组-1
- 【高维前缀和+容斥】Codeforces449D[Jzzhu and Numbers]题解
- 图的遍历 洛谷p3916
- 创建“hello world”图形界面
- C++信息学奥赛一本通1029
- 51nod 1611 金牌赛事
- C++函数基本知识