zoukankan      html  css  js  c++  java
  • [编程题] lc [面试题 1009 排序(杨氏)矩阵查找

    [编程题] lc: 面试题 10.09. 排序矩阵查找

    时间:2020.07.23

    题目描述

    给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。

    输入输出案例

    image-20200723223432947

    思路

    从矩阵的右上角的元素开始找,右上角的元素与target比较:

    • 如果右上角的元素和target相等,返回true
    • 如果右上角元素大于target,把列col-1
    • 如果右上角元素小于target,把行row+1

    Java代码

    class Solution {
        public boolean searchMatrix(int[][] matrix, int target) {
            //极端情况
            if(matrix==null) return false;
            if(matrix.length==0 || matrix[0].length==0) return false;
    
            //初始从右上角,这里记录右上角的左边为[row][col]
            int row =0;
            int col = matrix[0].length-1;
            while(row<matrix.length && col>=0){
                if(target==matrix[row][col]){
                    return true;
                }else if(target<matrix[row][col]){
                    col--;
                }else{
                    row++;
                }
            }
            //执行到此,就是未找到
            return false;
        }
    }
    

    如果是我们返回找到的元素下标

    ![image-20200723225152108]([编程题] lc [面试题 1009 排序(杨氏)矩阵查找.assets/image-20200723225152108.png)

    import java.util.*;
    
    public class Finder {
        public int[] findElement(int[][] matrix, int n, int m, int target) {
            // write code here
            //极端情况
            if(matrix==null) return new int[]{-1,-1};
            if(matrix.length==0 || matrix[0].length==0) return new int[]{-1,-1};
    
            //初始从右上角,这里记录右上角的左边为[row][col]
            int row =0;
            int col = m-1;
            while(row<n && col>=0){
                if(target==matrix[row][col]){
                    return new int[]{row,col};
                }else if(target<matrix[row][col]){
                    col--;
                }else{
                    row++;
                }
            }
            //执行到此,就是未找到
            return new int[]{-1,-1};
        }
        
    }
    
  • 相关阅读:
    Android Facebook分享功能实现
    Facebook KeyHash生成方法
    Android 版 Facebook 登录
    在Android App中集成Google登录
    Android 应用程序集成FaceBook 登录及二次封装
    Android Facebook和Twitter登录和分享完整版
    android开发之自定义圆形ImagView
    Okhttp、Volley和Gson的简单介绍和配合使用
    Android并发编程
    重要的ui组件——Behavior
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13369387.html
Copyright © 2011-2022 走看看