1. //一开始想当然的写了两层循环
    2. //每次内循环结束,外循环继续,就会重新执行内循环
    3. function findNumberIn2DArray(arr,target) {
    4. let m = arr.length
    5. let n = arr[0].length
    6. for (let i =n-1; i >= 0; i--){
    7. for(let j=0; j<m;j++) {
    8. if(arr[j,i]>target){
    9. break
    10. }else if(arr[j,i]<target){
    11. continue
    12. }else {
    13. return true
    14. }
    15. }
    16. }
    17. return false
    18. }
    19. // 可以用while
    20. function findNumberIn2DArray(matrix,target) {
    21. if(matrix.length ==0 || matrix[0].length ==0){
    22. return false
    23. }
    24. let rows = matrix.length
    25. let cols = matrix[0].length
    26. let [m,n] = [0,cols-1]
    27. while(m<rows&&n>=0){
    28. let item = matrix[m,n]
    29. if(item>target){
    30. n--
    31. }else if(item<target){
    32. m++
    33. }
    34. if(item===target){
    35. return true
    36. }
    37. }
    38. return false
    39. }
    40. //不知道为什么超时,之前提交成功的是下面这个就可以
    41. var findNumberIn2DArray = function(matrix, target) {
    42. if(matrix.length ==0 || matrix[0].length ==0){
    43. return false
    44. }
    45. let rows = matrix.length
    46. let cols = matrix[0].length
    47. let row = 0
    48. let col = cols-1
    49. while(row<rows && col>=0){
    50. let item = matrix[row][col]
    51. if(item === target){
    52. return true
    53. }
    54. if( item< target ){
    55. row++
    56. }else{
    57. col--
    58. }
    59. }
    60. return false
    61. };