劍指offer第二天之二維數組中的查找

劍指offer第二天之二維數組中的查找
在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。
java:
在這裏插入圖片描述

package offer;

public class Solution {
     /*
data:2020516
author:魏振東
fun:在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,
每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,
判斷數組中是否含有該整數。
* */
    public static boolean Find(int target, int [][] array) {
        boolean found = false;
//        選取右上角的點
//        行
        int row = 0;
//        列
        int cols = array[0].length-1;

        while(row<array.length&&cols>=0)
        {
            if(array[row][cols]==target)
            {
                found = true;
                return found;
            }
//            如果數組中的數大於target,則列向左移動
            else if(array[row][cols]>target)
            {
                cols--;
            }
//            如果數組中的數小於target,表示target可能在這列,則向下移動
            else{
                row++;
            }
        }
        return found;
    }
    public static void main(String args[])
    {
        int [][] array =new int[][]{{1,2,8,9},{4,7,10,13}};
        for(int i =0;i<array.length;i++){
            for(int j =0;j<array[0].length;j++){
                System.out.print(array[i][j]);
            }
            System.out.println();
        }

        System.out.println( Find(7,array));

    }
}

python :
在這裏插入圖片描述

# -*- coding:utf-8 -*-
class Solution:
    # array 二維列表
       def Find(self, target, array):
        # write code here
        found = False
        row = 0
        cols = len(array[0]) - 1
        while row < len(array) and cols >= 0:
            if array[row][cols] == target:
                found = True
                break
            elif array[row][cols]>target:
                cols -= 1
            else:
                row += 1
        return found

c++:
在這裏插入圖片描述

class Solution {
public:
    bool Find(int target, vector<vector<int> > array) {
        bool found = false;
        int row = 0;
        int cols = array[0].size()-1;
        while(row<array.size()&&cols>=0)
        {
            if(array[row][cols]==target)
            {
                found = true;
                break;
            }
            else if(array[row][cols]>target)
            {
                cols--;
            }
            else
            {
                row++;
            }
        }
        return found;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章