4. 二維數組中的查找
阿新 • • 發佈:2019-02-18
電視 -i true 二維 位置 == find class 正確答案
題目中有些特殊的地方,一定是用來結題的地方。查找類的問題多往有序性上靠,在一個有序的集合內查找要和二分查找類比,大於往左,小於向右。這一題我開始只想到了從一開始往右或者往下,思維定式,看一個數組總是想著按順序從左往右or從上向下。
寫的時候也出現了一點意外,我居然在每次循環的時候重置了循環終止的條件,這不就是死循環了嗎……所以提交的時候提醒我檢查是否循環出現了錯誤,看來出錯的不只我一個。
ublic class Solution { public boolean Find(int target, int [][] array) { int len = array[0].length;int hi = array.length; int i = 0; int j = hi-1; while (i<=len-1 && j>=0){
i = 0;
j = h1-i;
if(target>array[i][j]){ //如果target比該位置上的數大,就往下走 i += 1; }else if (target<array[i][j]){ j-= 1; }else if(target == array[i][j]) { return true; } } return false; } }
正確答案很是簡介,大了往下走,小了往左走。很想電視裏猜一個物品價格的方式。一開始我在數組的下標也犯錯了,長度不是下標!!!!長度不是下標!!!!!
不過這種模式也很常見,如果在一個循環裏能夠解決某個問題就返回true,如果在循環裏沒有解決,在循環外面返回的內容就是false。
ublic classSolution { public boolean Find(int target, int [][] array) { int len = array[0].length; int hi = array.length; int i = 0; int j = hi-1; while (i<=len-1 && j>=0){ if(target>array[i][j]){ //如果target比該位置上的數大,就往下走 i += 1; }else if (target<array[i][j]){ j -= 1; }else if(target == array[i][j]) { return true; } } return false; } }
4. 二維數組中的查找