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};
        }
        
    }
    
  • 相关阅读:
    P4890 Never·island
    P2617 Dynamic Rankings
    P3243 [HNOI2015]菜肴制作
    P4172 [WC2006]水管局长
    P4219 [BJOI2014]大融合
    P5241 序列
    P1501 [国家集训队]Tree II
    无法读取用户配置文件,系统自动建立Temp临时用户
    组件服务 控制台打不开
    打印服务器 功能地址保护错误
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13369387.html
Copyright © 2011-2022 走看看