刷題的日常Day1--二維數組中的查找

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

解題思路:題目給出了一個向右遞增,向下遞增的二維矩陣,根據該矩陣的特點,我們可以想出,從左下角開始進行查詢的話,如果目標值比查找值大,就向右查找,如果目標值比查找值小,就向上查找。最壞的情況下比較m+n次。

Java實現

public static boolean Find (int target,int [][] array){ int width = array[0].length;//長度索引 int height = array.length-1;//高度索引 int i = 0; while(i<width&&height>=0){ if(target==array[height][i]) return true; else if (target >array[height][i] ) { i++; } else { height--; } } return false; }

推薦閱讀:

Leetcode之旅|刪除鏈表中重複元素
動態規劃問題總結
刷題的日常Day1--重建二叉樹
刷題的日常Day2--斐波那契數列
學點演算法之棧的學習與應用

TAG:演算法與數據結構 |