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};
        }
        
    }
    
  • 相关阅读:
    Cocos2d-x 3.0 屏幕触摸及消息分发机制
    stretchableImageWithLeftCapWidth气泡拉伸
    海量数据插入数据库效率对照測试 ---ADO.NET下SqlBulkCopy()对照LINQ 下InsertAllOnSubmit()
    银联+移动+三星PK微信、余额宝
    热力学三大定律与熵
    热力学三大定律与熵
    OpenGL(六) gluLookAt和gluPerspective函数解析
    特殊字符
    特殊字符
    函数的功能
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13369387.html
Copyright © 2011-2022 走看看