当前位置: 首页 > news >正文

LeetCode 74 Search a 2D Matrix(搜索2D矩阵)

版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/50776497

翻译

写一个高效算法用于在一个m x n的矩阵中查找一个值。
这个矩阵有如下属性:

每行的整型数都是从左到右排序的。
每行的第一个元素都比上一行的最后一列大。

例如,
考虑如下矩阵:
[
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]
给定target = 3,返回true

原文

Write an efficient algorithm that searches for a value in an m x n matrix. 
This matrix has the following properties:

Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row.
For example,

Consider the following matrix:

[
  [1,   3,  5,  7],
  [10, 11, 16, 20],
  [23, 30, 34, 50]
]
Given target = 3, return true.

分析

可能因为我好困了,所以不论是算法还是我自己,都效率很低……

下面这个代码也是一改再改……

bool searchMatrix(vector<vector<int>>& matrix, int target) {
    if (matrix[0][0] > target) return false;
    for (int i = 0; i < matrix.size(); ) {
        for (int j = 0; j < matrix[i].size(); ) {
            if (i == matrix.size() - 1 && matrix[i][j] < target) {
                if (j >= matrix[i].size()) return false;
                j += 1;
                if (matrix[i][j] > target) return false;
            }
            else if (matrix[i][j] < target && matrix[i+1][j] > target) {
                j += 1;
                if (j >= matrix[i].size()) return false;
                if (matrix[i][j] > target) return false;
            }
            else if (matrix[i][j] < target && matrix[i + 1][j] <= target) {
                i += 1;
            }
            else if (matrix[i][j] == target) {
                return true;
            }     
            if (i == matrix.size() - 1 && j == matrix[i].size() ) {
                return false;
            }
        }
    }
    return false;
}

明天再整理整理思路重新做一遍吧……

相关文章:

  • CentOS 6安装配置LDAP
  • 习题6-2 S-Trees(树)
  • centos6.x 抓取ssh登录的用户名和密码
  • Win7域用户实现User权限安装共享打印机
  • 用 gitbook 为项目写本书吧
  • WinCE6.0多国语言软键盘
  • Codeforces Round #344 (Div. 2) E. Product Sum 维护凸壳
  • 20145237《Java程序设计》第一周学习总结
  • ListView之SimpleAdapter
  • HashMap的工作原理及HashMap和Hashtable的区别
  • 多人聊天
  • mysql5.5.48 多实例配置及启动脚本
  • java 验证码生成
  • 五大常用算法之五:分支限界法
  • Swift 中的函数(上)
  • Android Studio:GIT提交项目到远程仓库
  • Angular 4.x 动态创建组件
  • centos安装java运行环境jdk+tomcat
  • CSS相对定位
  • Java反射-动态类加载和重新加载
  • redis学习笔记(三):列表、集合、有序集合
  • 动态规划入门(以爬楼梯为例)
  • 力扣(LeetCode)22
  • 聊聊redis的数据结构的应用
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • MyCAT水平分库
  • zabbix3.2监控linux磁盘IO
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​io --- 处理流的核心工具​
  • ​业务双活的数据切换思路设计(下)
  • #include到底该写在哪
  • #每天一道面试题# 什么是MySQL的回表查询
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)计算机毕业设计大学生兼职系统
  • (三) diretfbrc详解
  • (一)Linux+Windows下安装ffmpeg
  • .dwp和.webpart的区别
  • .net分布式压力测试工具(Beetle.DT)
  • .NET基础篇——反射的奥妙
  • .NET企业级应用架构设计系列之开场白
  • /var/spool/postfix/maildrop 下有大量文件
  • @private @protected @public
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [2023-年度总结]凡是过往,皆为序章
  • [bzoj1324]Exca王者之剑_最小割
  • [CLR via C#]11. 事件
  • [Codeforces] combinatorics (R1600) Part.2
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件
  • [HackMyVM]靶场 Wild
  • [IE编程] 如何编程清除IE缓存
  • [Linux]进程间通信(进程间通信介绍 | 匿名管道 | 命名管道)