面試題04. 二維數組中的查找【LeetCode劍指offer題解】

題目:

面試題04. 二維數組中的查找

在這裏插入圖片描述

思路:

  1. 二維數組是有序的數組,從左向右遞增,從上到下遞增,所以只要比較每一行的最後一個數字,只要最後一個數字比當前數字小,那麼直接跳過(剪枝)這一行;若某一行的最後一個數字恰好是要找的target,那麼直接返回true;若最後一個數字比當前數字大,接着就看這一行的第一個數字,若第一個數字小於target,就說明要找的數字可能在這一行中,那麼就對這一行進行遍歷比較。

實現:

class Solution {
   public boolean findNumberIn2DArray(int[][] matrix, int target) {
       if (matrix == null || matrix.length ==0 || matrix[0].length == 0) return false;
        int row = matrix.length;
        int col = matrix[0].length;

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