1. 程式人生 > >4. 二維數組中的查找

4. 二維數組中的查找

電視 -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 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){ 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. 二維數組中的查找