剑指 Offer —— 数组和字符串
文章目录
- 剑指 Offer 04. 二维数组中的查找
- 代码实现
- 解题方案 + 思路
- 算法步骤
- 剑指 Offer 05. 替换空格
- 题目描述
- 代码实现
- 解题方案 + 思路
- 算法步骤
- 剑指 Offer 11. 旋转数组的最小数字 - 解决方案
- 题目描述
剑指 Offer 04. 二维数组中的查找
在一个 n * m 的二维数组中:
- 每一行都按照从左到右 非递减 的顺序排序
- 每一列都按照从上到下 非递减 的顺序排序
请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例:
- 现有矩阵 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
限制:
0 <= n <= 1000
0 <= m <= 1000
代码实现
class Solution:def findNumberIn2DArray(self, matrix: List[List[int]], target: int) -> bool:row=len(matrix)-1col=0while( row>=0 and col<len(matrix[0]) ):if(matrix[row][col]==target):return Trueelse:if(matrix[row][col]>target):row=row-1else:col=col+1return False
解题方案 + 思路
- 标签:数组遍历
- 从矩阵的左下角看,上方的数字都比其小,右方的数字都比其大,所以依据该规律去判断数字是否存在
- 设当前数字为
cur,目标数字为target- 当
target < cur时,cur 更新为其上面的数字 - 当
target > cur时,cur 更新为其右侧的数字
- 当
- 直到相等则返回
true,否则到了矩阵边界返回false
- 设当前数字为
- 时间复杂度:
O(m+n)
算法步骤

剑指 Offer 05. 替换空格
题目描述
请实现一个函数,把字符串 s 中的每个空格替换成 “%20”。
示例 1:
- 输入:s = “We are happy.”
- 输出:“We%20are%20happy.”
限制:
0 <= s 的长度 <= 10000
代码实现
Python简单法:
class Solution:def replaceSpace(self, s: str) -> str:return "%20".join(s.split(' '))
Python法:
class Solution {
public:string replaceSpace(string s) {for(int i = 0; i < s.length(); i++){if(s.find(" ") == i){s.erase(i, 1);s.insert(i, "%20");}}return s;}
};
C++:
class Solution {
public:string replaceSpace(string s) {for(int i = 0; i < s.length(); i++){if(s.find(" ") == i){ # 查找到空格所在的位置s.erase(i, 1); # 先清除空格所占的一个字符s.insert(i, "%20"); # 在该位置插入%20}}return s;}
};
解题方案 + 思路
- 标签:字符串
- 最简单的方案自然是直接使用库函数啦!当然题目肯定是不希望我们这样做的!
- 增加一个新字符串,遍历原来的字符串,遍历过程中,
- 如果非空格则将原来的字符直接拼接到新字符串中
- 如果遇到空格则将
%20拼接到新字符串中
- 时间复杂度:
O(n),空间复杂度:O(n)
算法步骤

剑指 Offer 11. 旋转数组的最小数字 - 解决方案
题目描述
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。
- 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。
- 例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。
- 注意,数组
[a[0], a[1], a[2], ..., a[n-1]]旋转一次 的结果为数组[a[n-1], a[0], a[1], a[2], ..., a[n-2]]。
示例 1:
- 输入:[3,4,5,1,2]
- 输出:1
示例 2:
- 输入:[2,2,2,0,1]
- 输出:0
提示:
- n ==
numbers.length - 1 <=
n<= 5000 - -5000 <=
numbers[i]<= 5000 - numbers 原来是一个升序排序的数组,并进行了 1 至 n 次旋转
相关文章:
剑指 Offer —— 数组和字符串
文章目录剑指 Offer 04. 二维数组中的查找代码实现解题方案 思路算法步骤剑指 Offer 05. 替换空格题目描述代码实现解题方案 思路算法步骤剑指 Offer 11. 旋转数组的最小数字 - 解决方案题目描述剑指 Offer 04. 二维数组中的查找 在一个 n * m 的二维数组中: 每…...
Java 字符编码
编码:数据存储进计算机中需要转换为二进制存储,这个过程就是编码。 解码:计算机读取数据并展示在页面上,需要将二进制转换为人类语言的过程,叫做解码。 乱码:如果编码和解码时使用的码表不一样,…...
ubuntu-9-安装chrony时间同步
使用chrony搭建时间同步服务器 [Linux系列]Chrony时间同步服务器 配置chrony服务,实现服务器时间自动同步 linux上内网环境配置NTP时间同步详解 经验体会:解决Ubuntu 18.04Windows双系统时间不同步的问题 1 时间同步 我们知道一台电脑主机,…...
CMMI流程规范—服务与维护
服务与维护(Service and Maintenance, SM)是指产品销售之后的客户服务和产品维护。客户服务和产品维护的宗旨就是提高客户对产品以及对开发方的满意度。服务与维护过程域是SPP模型的重要组成部分。本规范阐述了服务与维护过程域的两个主要规程࿱…...
【蓝桥杯集训12】DFS(3 / 5)
目录 842. 排列数字 - DFS按位置枚举 843. n-皇后问题 - DFS按行枚举 165. 小猫爬山 - DFS枚举小猫 1209. 带分数 - DFS 3502. 不同路径数 - 842. 排列数字 - DFS按位置枚举 活动 - AcWing 题目: 给你一个整数n 要求将1~n的所有排列情况列出 比如:…...
Elasticsearch:构建自动补全功能 - Autocomplete
什么是自动补全(autocomplete)功能呢?我们举一个很常见的例子。 每当你去谷歌并开始打字时,就会出现一个下拉列表,其中列出了建议。 这些建议与查询相关并帮助用户完成查询。 Autocomplete 正如维基百科所说的…...
One UI 5.1 更新来了
之前一直在关注One UI 5.0里提到的视频通话背景功能模块,结果5.0版本推送的时候没有引入,有先行者计划博主说是5.1里肯定会有的;前一两天One UI 5.1更新来了,然而该功能还是没有引入,表示很遗憾;本次更新新…...
Python学习笔记11:文件
文件 打开文件 函数open的参数mode的最常见取值 值描述‘r’读取模式(默认值)‘w’写入模式‘x’独占写入模式‘a’附加模式‘b’二进制模式(与其他模式结合使用)‘t’文本模式(默认值,与其他模式结合使…...
django-filter的使用
django-filter是一个通用的、可重用的应用程序,它可以减轻视图代码的编写工作量。具体来说,它允许用户根据模型的字段筛选查询集,并显示表单让他们这样做。 安装 pip install django-filter快速开始 在settings.py中添加如下配置: INSTAL…...
时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)
时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络) 目录时序预测 | MATLAB实现IWOA-BiLSTM和BiLSTM时间序列预测(改进的鲸鱼算法优化双向长短期记忆神经网络)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现IWO…...
【C++】string的成员函数、成员常量和非成员函数
目录 string 1. string的成员函数 1.1 构造、析构和赋值运算符重载 1.1.1 构造函数 1.1.2 析构函数 1.1.3 赋值运算符重载 1.2 迭代器 1.3 容量 1.4 元素访问 1.4.1 遍历方法 1.5 修改器 1.6 字符串操作 2. string的成员常量 3. string的非成员函数 string 以下…...
网络互连模型:OSI 七层模型
OSI 七层模型 七层模型,亦称 OSI(Open System Interconnection)。OSI 七层参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间网络互联的标准体系,一般称为 OSI 参考模型或七层模型。OSI 七层…...
18跨越语言:不同语言间进行RPC通信
在最开始介绍gRPC时我们讲到,gRPC具有灵活的兼容性,可以支持很多种编程语言,下面我们就使用在后端领域最常用的两种编程语言Go和Java,来体验一下gRPC在不同语言的项目间是如何进行通信的。 逻辑架构 由上图我们可以看出,Go语言设计gRPC的服务端,Java语言设计gRPC的客户端…...
解压缩工具:Bandizip 中文
bandizip是一款可靠和快速的压缩软件,它可以解压RAR、7Z、ZIP、ISO等数十种格式,也可以压缩7Z、ZIP、ISO等好几种常用格式,在压缩文件方面毫不逊色于winrar,适用于多核心压缩、快速拖放、高速压缩等功能,采用了先进快速…...
JAVA知识点全面总结2:面向对象
二.面向对象 1.面向对象有哪些重要的关键字?作用是什么? 2.理解多态的使用? 3.接口与抽象类的相同点和不同点? 4.equals和toString的判断? 5.新建对象的流程是什么?new一个对象? 6.深拷贝…...
DNS作用及工作原理
文章目录1. DNS作用2 DNS 三个组成部分:2.1 客户端2.2Local DNS2.3 权威域 DNS 服务器3 工作过程1. DNS作用 DNS 分为 Client 和 Server,Client 扮演发问的角色,也就是问 Server 一个 Domain Name,而 Server 必须要回答此 Domain…...
Android 9.0 wifi的随机mac地址修改为固定不变
1.前言 在9.0的系统rom产品定制化开发中,在系统默认的wifi的mac地址是会在联网前后会变化,因为默认是随机显示mac地址,所以会在连上wifi后mac地址会变动但是如果根据mac地址来升级 会引起一系列问题,为了避免这些问题 所以就要求固定mac地址,这就需要看wifi模块怎么改变ma…...
Apinto 网关 V0.11.1 版本发布,多协议互转,新增编码转换器,接入 Prometheus
Eolink 旗下 Apinto 开源网关再次更新啦~ 一起来看看是否有你期待的功能! 1、协议转换功能上线 之前发布的 Apinto v0.10.0 已经支持了多协议的基本功能,实现多协议支持的一次验证。本次最新版本可以支持 HTTP 与 gRPC、HTTP 与 Dubbo2 之间的协议转换。…...
Android 12.0 根据app包名授予app监听系统通知权限
1.概述 在12.0的系统rom产品定制化开发中,在一些产品rom定制化开发中,系统内置的第三方app需要开启系统通知权限,然后可以在app中,监听系统所有通知,来做个通知中心的功能,所以需要授权 获取系统通知的权限,然后来顺利的监听系统通知。来做系统通知的功能 2.根据app包名…...
mysql视图和存储过程
视图视图就是将一条sql查询语句封装起来,之后使用sql时,只需要查询视图即可,查询视图时会将这条sql语句再次执行一遍。视图不保存数据,数据还是在表中。SELECT 语句所查询的表称为视图的基表,而查询的结果集称为虚拟表…...
互联网大厂Java面试实战:严肃面试官与搞笑程序员谢飞机的三轮问答
互联网大厂Java面试实战:严肃面试官与搞笑程序员谢飞机的三轮问答 在互联网大厂Java岗位面试中,面试官不仅考察应聘者的技术深度,更关注其理解业务场景的能力和解决问题的方法。本文通过一场幽默而真实的模拟面试,呈现核心Java与周…...
PyTorch 2.5镜像体验:预装全套工具,让AI项目开发效率翻倍
PyTorch 2.5镜像体验:预装全套工具,让AI项目开发效率翻倍 1. 为什么选择预装环境的PyTorch镜像? 深度学习项目开发中,最令人头疼的往往不是算法设计或模型调优,而是环境配置这个看似简单却暗藏玄机的工作。想象一下这…...
Modules 模块化:头文件地狱真的要终结了吗?我持怀疑态度
各位来宾,各位技术同仁,大家好!今天我们齐聚一堂,探讨一个在C社区引发广泛讨论、充满期待又饱含争议的话题:C模块化。特别是关于“头文件地狱真的要终结了吗?”这个问题,我深知在座的许多人&…...
FPGA实战:单总线协议解析与DHT11温湿度数据采集
1. 从零认识DHT11温湿度传感器 第一次拿到DHT11这个白色小方块时,我完全没想到这么便宜的传感器能有如此实用的功能。作为一款经典的数字温湿度复合传感器,DHT11通过单总线协议输出校准后的数字信号,省去了传统模拟传感器需要的ADC转换环节。…...
MAX7319 GPIO输入扩展库:硬件边沿检测与中断驱动实践
1. 项目概述iotec_MAX7319 是一款面向嵌入式系统的轻量级 C 驱动库,专为 Maxim Integrated(现属 Analog Devices)推出的 IC 接口 GPIO 扩展芯片 MAX7319 设计。该芯片并非通用型端口扩展器,而是一款带可屏蔽边沿检测功能的专用输入…...
如何利用系统提示词革新开源项目的AI功能实现
如何利用系统提示词革新开源项目的AI功能实现 【免费下载链接】system_prompts_leaks 项目地址: https://gitcode.com/GitHub_Trending/sy/system_prompts_leaks 在人工智能技术快速发展的今天,系统提示词已成为解锁AI潜能的关键钥匙。对于开源项目而言&…...
别再纠结硬件滚动了!用Arduino+SSD1306库实现超长文本的软件滚动显示(附完整代码)
ArduinoSSD1306实现超长文本流畅滚动的终极方案 当你在创客项目中需要显示超出屏幕宽度的日志数据或长消息时,硬件滚动的局限性就会暴露无遗。我曾在一个环境监测项目中遇到这个问题——传感器数据经常超过OLED屏幕的16字符显示限制,硬件滚动方案直接截断…...
解放双手!用Open-AutoGLM实现微信自动回复消息,亲测可用
解放双手!用Open-AutoGLM实现微信自动回复消息,亲测可用 1. 为什么需要微信自动回复? 每天我们都会收到大量微信消息:工作群的通知、朋友的问候、家人的关心...但总有那么些时刻,我们无法及时回复: 开会…...
LeetCode 102. Binary Tree Level Order Traversal 题解
LeetCode 102. Binary Tree Level Order Traversal 题解 题目描述 给你二叉树的根节点 root,返回其节点值的 层序遍历。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输…...
AML启动器:智能管理XCOM 2模组的一站式解决方案
AML启动器:智能管理XCOM 2模组的一站式解决方案 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom…...
