剑指offer一:二维数组中的查找
生活随笔
收集整理的這篇文章主要介紹了
剑指offer一:二维数组中的查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
?
我的解題思路: 因為每一行都按照從左到右遞增的順序排序,所以我利用二分查找方法解決
package com.jianzhioffer;public class FindArray {public static void main(String[] args){int [][] array = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};System.out.println(Find(7, array));}public static boolean Find(int target, int [][] array) {int l = array.length;int r = array[0].length;int i=0;for(i=0;i<l;i++){int lf = 0;int rg = r -1;while(lf<=rg){int m = (lf + rg)/2;if(array[i][m] == target){return true;}if(array[i][m] > target){rg = m-1;}else{lf = m+1;}} }return false;} }別人的思路:
二維數組是有序的,從右上角來看,向左數字遞減,向下數字遞增。
因此從右上角開始查找,
- 當要查找數字比右上角數字大時,下移;
- 當要查找數字比右上角數字小時,左移;
- 如果出了邊界,則說明二維數組中不存在該整數。
?
??
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的剑指offer一:二维数组中的查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构:链表面试题
- 下一篇: 剑指offer二:字符串中的空格替换