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

做外包的网站有哪些问题展示型网站设计公司

做外包的网站有哪些问题,展示型网站设计公司,自己做的网站能放到网上么,南京关键词网站排名题目描述 给定一个 m x n 的矩阵 matrix 和一个目标值 target,请你编写一个函数来判断目标值 target 是否在矩阵中。 每行的元素按升序排列。每列的元素按升序排列。 示例 1 输入: matrix [[1, 4, 7, 11],[2, 5, 8, 12],[3, 6, 9, 16],[10, 13, 14…

题目描述

给定一个 m x n 的矩阵 matrix 和一个目标值 target,请你编写一个函数来判断目标值 target 是否在矩阵中。

  • 每行的元素按升序排列。
  • 每列的元素按升序排列。

示例 1

输入

matrix = [[1, 4, 7, 11],[2, 5, 8, 12],[3, 6, 9, 16],[10, 13, 14, 17]
]
target = 5

输出

true

示例 2

输入

matrix = [[1, 4, 7, 11],[2, 5, 8, 12],[3, 6, 9, 16],[10, 13, 14, 17]
]
target = 20

输出

false

解题思路

1. 暴力法

最简单的做法是遍历整个矩阵,逐个元素进行比较,看是否等于 target。这种方法的时间复杂度是 O(m * n),其中 m 是矩阵的行数,n 是矩阵的列数。

2. 优化方法(从矩阵的角落开始)

考虑到矩阵的特点:每行和每列都是升序排列的,我们可以利用这一点来提高搜索效率。

一种常见的优化方法是从矩阵的右上角或者左下角开始搜索。这里我们选择从右上角开始:

  • 如果目标值等于当前位置的值,直接返回 true
  • 如果目标值小于当前位置的值,则可以排除当前列,因为该列的元素都大于当前位置的值,移动到当前行的左边(即向左移动)。
  • 如果目标值大于当前位置的值,则可以排除当前行,因为该行的元素都小于当前位置的值,移动到当前列的下方(即向下移动)。

这种方法的时间复杂度是 O(m + n),比暴力法更高效。

实现代码(右上角开始)

#include <stdio.h>
#include <stdbool.h>bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {int m = matrixSize; // 矩阵的行数int n = *matrixColSize; // 矩阵的列数int row = 0;int col = n - 1; // 从右上角开始while (row < m && col >= 0) {if (matrix[row][col] == target) {return true; // 找到目标值} else if (matrix[row][col] < target) {row++; // 目标大于当前值,向下移动} else {col--; // 目标小于当前值,向左移动}}return false; // 未找到目标值
}int main() {// 示例矩阵int matrix[4][4] = {{1, 4, 7, 11},{2, 5, 8, 12},{3, 6, 9, 16},{10, 13, 14, 17}};int matrixSize = 4;int matrixColSize = 4;int target = 5;// 使用动态数组传递矩阵int* matrixPtr[4];for (int i = 0; i < matrixSize; i++) {matrixPtr[i] = matrix[i];}bool result = searchMatrix(matrixPtr, matrixSize, &matrixColSize, target);if (result) {printf("Found %d in the matrix.\n", target);} else {printf("%d not found in the matrix.\n", target);}return 0;
}

解释

  1. 矩阵初始化

    • main 函数中,我们定义了一个 4x4 的静态二维数组 matrix,并将其转换为指针数组 matrixPtr,用于传递给 searchMatrix 函数。
  2. 搜索方法

    • searchMatrix 函数从矩阵的右上角开始搜索,通过比较当前值与目标值的大小来决定向下或向左移动。
    • 如果目标值等于当前元素,返回 true;如果目标值小于当前元素,向左移动;如果目标值大于当前元素,向下移动。
  3. 返回值

    • 如果在搜索过程中找到了目标值,返回 true;否则返回 false

时间复杂度和空间复杂度

  • 时间复杂度

    • 每次操作后,我们要么向下移动一行,要么向左移动一列。所以,最多需要 m + n 次操作,其中 m 是矩阵的行数,n 是矩阵的列数。因此时间复杂度是 O(m + n)
  • 空间复杂度

    • 只使用了常数额外空间,所以空间复杂度是 O(1)
http://www.tj-hxxt.cn/news/88614.html

相关文章:

  • 手机在线建网站企业网络营销策划方案范文
  • 怎么设置自己做的网站吗百度在线扫题入口
  • 做老虎机网站犯法么谷歌搜索引擎363
  • 网站建设与设计教程视频教程广州十大营销策划公司
  • 做最好的赚钱网站合肥seo服务商
  • 学做网站论坛适合发表个人文章的平台
  • 怎么用源码做网站视频关键词首页排名优化公司推荐
  • 做网站推广前途广州网站优化费用
  • 手机网站建设找哪家好seo基本概念
  • 白银市建设管理处网站互联网营销外包推广
  • 呼和浩特企业网站排名优化软件开发培训机构去哪个学校
  • 广西学校网站建设专业seo推广
  • 怎么做百度网站网站关键词有哪些
  • 淘客网站怎么做代理如何宣传推广产品
  • 网站外链可以在哪些平台上做外链软文平台有哪些
  • 电子商务网站建设模板代码关键词怎么选择技巧
  • 杭州网站建设公司联系方式餐饮营销引流都有什么方法
  • 建设企业网站就等于开展网络营销吗seo搜索优化
  • 手机端怎么变成电脑端石家庄seo按天扣费
  • 青岛网站开发培训价格百度搜索排名
  • 海阔淘宝客助手wordpress演示站 | 紫色清新商城模板全网营销推广 好做吗
  • 易进网站建设推广网络营销的主要手段
  • 高端网站制作报价发帖推广
  • 技能培训中心网站建设销售找客户最好的app
  • 深一网站建设招聘找培训机构的平台
  • 政府网站安全如何做seo做得比较好的公司
  • 网站超市源码哪个好关键词推广效果分析
  • dedecms导航网站模板如何优化网站
  • 装修网站模板百度广告服务商
  • 做游戏网站有钱赚吗做网站需要多少钱 都包括什么