剑指offer一:二维数组中的查找
生活随笔
收集整理的這篇文章主要介紹了
剑指offer一:二维数组中的查找
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
在一個(gè)二維數(shù)組中(每個(gè)一維數(shù)組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個(gè)函數(shù),輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù),判斷數(shù)組中是否含有該整數(shù)。
?
我的解題思路: 因?yàn)槊恳恍卸及凑諒淖蟮接疫f增的順序排序,所以我利用二分查找方法解決
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;} }別人的思路:
二維數(shù)組是有序的,從右上角來看,向左數(shù)字遞減,向下數(shù)字遞增。
因此從右上角開始查找,
- 當(dāng)要查找數(shù)字比右上角數(shù)字大時(shí),下移;
- 當(dāng)要查找數(shù)字比右上角數(shù)字小時(shí),左移;
- 如果出了邊界,則說明二維數(shù)組中不存在該整數(shù)。
?
??
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的剑指offer一:二维数组中的查找的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构:链表面试题
- 下一篇: 剑指offer二:字符串中的空格替换