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

图表统计类手机网站开发/全网整合营销平台

图表统计类手机网站开发,全网整合营销平台,新手学做网站 视频百度网盘,个性化网站建设开发1. 问题描述: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例: 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5,…

1. 问题描述:

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。
每列的元素从上到下升序排列。

示例:
现有矩阵 matrix 如下:

[
  [1,   4,  7, 11, 15],
  [2,   5,  8, 12, 19],
  [3,   6,  9, 16, 22],
  [10, 13, 14, 17, 24],
  [18, 21, 23, 26, 30]
]

给定 target = 5,返回 true。
给定 target = 20,返回 false。

2. 思路分析:

① 从题目中可以知道向右与向下的方向都是升序的,所以很自然地想到使用二分查找的思路来解决,我们可以对每一行中查找出对应的列,然后再列中查找对应的元素看是否存在,在行与列查找元素都是可以使用二分查找的方法来解决的,我们可以声明一个方法,方法中传递一个参数来表示是查找行还是列,然后进行二分查找即可

② 因为我们可以先向右查找,然后向下进行查找,对于矩阵中的每一个元素都是面临着这两种选择,所以除了使用二分查找的方法,还可以使用递归的方法,我们可以在递归的方法中判断一下,当当前递归的元素大于了target那么直接return返回到上一层然后尝试其他的元素值,我们可以写一个有返回值的递归方法,只要是往右递归与往下递归右一个成立那么说明就是找到这个target了

3. 代码如下:

二分查找:

import sys
from typing import Listclass Solution:def binarySearch(self, l: int, r: int, matrix: List[List[int]], flag: int, x: int, target: int):# 二分查找mid = 0# 设置flag表示表示在行中查找还是在列中查找if flag == 0:# 同一行中查找列while l <= r:mid = (l + r) // 2if matrix[x][mid] == target:return midelif matrix[x][mid] < target:l = mid + 1else:r = mid - 1if matrix[x][mid] > target: return mid - 1return midelse:# 同一列中查找行mid = 0while l <= r:mid = (l + r) // 2if matrix[mid][x] == target:return midelif matrix[mid][x] < target:l = mid + 1else:r = mid - 1return middef searchMatrix(self, matrix, target):if len(matrix) == 0 or len(matrix[0]) == 0: return Falsefor i in range(len(matrix)):col = self.binarySearch(0, len(matrix[0]) - 1, matrix, 0, i, target)row = self.binarySearch(0, len(matrix) - 1, matrix, 1, col, target)if matrix[row][col] == target: return Truereturn False

递归:

import sys
from typing import Listclass Solution:# 矩阵的行与列row, col, max = 0, 0, sys.maxsize""":param r: 当前递归的行的位置:param c: 当前递归的列的位置"""def dfs(self, matrix: List[List[int]], target: int, r: int, c: int):if r == self.row or c == self.col: return Falseif matrix[r][c] == self.max: return Falseif matrix[r][c] == target: return Trueif matrix[r][c] > target: return False# 对访问过的位置进行标记matrix[r][c] = self.maxright = self.dfs(matrix, target, r, c + 1)down = self.dfs(matrix, target, r + 1, c)return right or downdef searchMatrix(self, matrix, target):if len(matrix) == 0 or len(matrix[0]) == 0: return Falseself.row, self.col = len(matrix), len(matrix[0])return self.dfs(matrix, target, 0, 0)

 

http://www.lbrq.cn/news/1117117.html

相关文章:

  • 百度搜索自己的网站/360建站和凡科哪个好
  • 长春做网站的/友情链接联盟
  • 公司做网站,要准备哪些素材/国外网站
  • 河东做网站公司/需要一个网站
  • 网站建设 话术/b站是哪个网站
  • 整站下载器 做网站地图/中视频自媒体平台注册
  • 怎么弄百度网站/2024年重大新闻简短
  • 怎么做网站程序/常用的搜索引擎有哪些?
  • 改变WordPress界面/seodao cn
  • 做那种的视频网站有哪些/网络营销模式有哪些
  • 新闻网站建设条件/seo站长工具查询
  • 音乐网站开发 群/在百度上怎么发布信息
  • 专门做企业名录的网站/信阳seo公司
  • 网站做实名认证/专业北京网站建设公司
  • 网站建设平台流程/seo推广方案怎么做
  • 模板网站robots怎么做/太原百度推广开户
  • 电子政务政府门户网站建设方案/廊坊关键词排名首页
  • wordpress 多域名绑定/北京seo优化诊断
  • wordpress收费下载/成都网站快速优化排名
  • wordpress主机 seo/宁波 seo整体优化
  • 建设网站服务器/百度一下你就知道了 官网
  • 斗鱼网站的实时视频是怎么做的/百度最新收录方法
  • 建设银行个人官方网站/推广普通话手抄报内容资料
  • 大连市城市建设投资集团网站/培训心得总结怎么写
  • 麒贺丝网做的网站优化/搜索引擎营销的简称是
  • 中国水土保持与生态环境建设网站/网络信息发布平台
  • 做外贸网站需要注意些什么/宁德市教育局
  • html5电影网站建设/seo兼职工资一般多少
  • 哪个yy频道做天龙私服网站/制作一个简单的html网页
  • 网站搭建好有什么内容可以修改/广告竞价推广
  • Redis学习系列之—— JDHotKey 热点缓存探测系统
  • 【中等】题解力扣22:括号生成
  • 神经网络常见激活函数 13-Softplus函数
  • uniapp各端通过webview实现互相通信
  • STM32 | 定时器 PWM 呼吸灯
  • 如何卸载SQLServer