劍指OFFER_01_二維數組中的查找

題目描述

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

相關知識補充

【1】二維數組長度獲取方法
例如:二維數組array[][]
array.length 表示二維數組第一維的長度,即總行數;
array[0].length 表示二維數組第二維的長度,即總列數;
注:二維數組中要有元素,否則會報錯。
【2】continue的用法 vs break
·break:不等到循環條件不滿足就提前終止循環,滿足某個條件後就break,跳出循環,執行循環後面的語句。
·continue:不提前終止循環,只提前終止本輪循環,還要繼續執行下一次循環。

代碼分段理解

循環起始條件與終止條件:
因爲二維數組從左上角到右下角的數逐漸增大,故採用從左下角開始逐行逐列向上、向右遍歷。起始位置爲最後一行第一列元素,終止條件:目標值在二維數組中被找到則返回true,未被找到則返回false。未被找到的情況爲,在循環結束後沒有任何輸出,則返回false。

for(i=-1,j=0;i>=0&&j<col;)

包含循環的語句,循環起始、循環移動、循環終止是三個非常關鍵的部分,一定要把握這三個部分的準確性。同時,也不要忘記循環的意義。

            if(target == array[i][j])
                return true;
            if(target < array[i][j])
            {
                i--;
                continue;
            }
            if(target > array[i][j])
            {
                j++;
                continue;
            }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章