劍指offer(Javascript-3 二維數組的查找)

題目:在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。

  • 算法思路:
    在二位數組中查找,由于數組是有順序的,所以在右上角或者左下角開始查找,每次比較大小都能排除一行或者一列,一直循環找下去即可。
  • 實現思路:
    采用while循環,每比較一次就按查找的目標前進一行或者一列
function findNumber(arr, num) {
                var row = arr.length;
                var i = row - 1;
                var col=arr[0].length;
                var j = 0;
                while (i >= 0 && j<=col-1) {
                    if (arr[i][j] > num) {
                        i--;
                    } else if (arr[i][j] < num) {
                        j++;
                    } else {
                        return true;
                    }
                }
                return false;
            }

for循環

  function findNumber(arr, num) {
                var row = arr.length;
                var col=arr[0].length;
                for (var i = 0; i < row;i++) {
                    for (var j = col-1; j >=0; j--) {
                        if(arr[i][j]>num){
                            continue;
                        }else if(arr[i][j]<num){
                            //i++;
                            break;
                        }else{
                            return true;
                        }
                    }
                }
                return false;
                
            }

!由于for循環的機制是 初始化-判斷-函數體-表達式-判斷-函數體-表達式。。。由于表達式中已經含有j--和i++所以在函數體中break和continue之后不需要在做j--和i++的運算,如果運算就重復了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • 劍指 offer 在一個二維數組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成...
    faremax閱讀 2,247評論 0 7
  • 今天主講零班新成員許小言。
    李思丞閱讀 417評論 0 2
  • 只是,想起來的時候,已經不聯絡很久很久,久到只剩下好久沒有聯系的聯系方式。 “看完一部電影,突然好想你們”,莫名其...
    醒目路飛閱讀 426評論 0 3
  • 聆聽是這段遠途中我唯一能做好的, 雖然偶爾我也不忘吐槽一番。 交流是需要時刻走心的,因為我懂。 但選擇有時卻成了恐...
    一葉一葡撻閱讀 179評論 0 1