【数组】面试题 10.05. 稀疏数组搜索

稀疏数组搜索算法
本文介绍了一种在排好序且包含空字符串的数组中查找指定字符串的方法。通过使用映射来记录非空字符串及其位置,实现了快速定位目标字符串的功能。

【题目】
稀疏数组搜索。有个排好序的字符串数组,其中散布着一些空字符串,编写一种方法,找出给定字符串的位置。
【示例1】
输入: words = [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”], s = “ta”
输出:-1
说明: 不存在返回-1
【示例2】
输入:words = [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”,“dad”, “”, “”], s = “ball”
输出:4
【提示】
words的长度在[1, 1000000]之间
【代码】

class Solution {
public:
    int findString(vector<string>& words, string s) {
        map<string,int> m;
        for(int i=0;i<words.size();i++)
            m[words[i]]=i;
        if(m.count(s)==0)
            return -1;
        return m[s];
    }
};
### MariaDB 升级至 10.05.00 版本教程及注意事项 #### 配置文件调整 在升级之前,需要确认当前使用的 `ini` 文件是否兼容新版本。通常情况下,MariaDB 的配置文件位于 `/etc/my.cnf` 或者 `/etc/mysql/mariadb.conf.d/50-server.cnf` 中[^1]。如果存在不兼容的参数,则可能需要手动调整这些参数。 以下是常见的配置项示例: ```ini [mariadb] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-bin=py-mysql-bin character-set-server=utf8mb4 collation-server=utf8mb4_general_ci symbolic-links=0 [mariadb_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid [client] default-character-set=utf8mb4 ``` 注意:建议将字符集设置为 `utf8mb4` 而不是 `utf8`,因为 `utf8mb4` 支持更广泛的 Unicode 字符编码。 --- #### 备份现有数据 在执行任何升级操作前,备份现有的数据库是非常重要的一步。可以通过以下命令完成全量备份: ```bash mysqldump --all-databases --single-transaction > all_databases_backup.sql ``` 此命令会导出所有数据库的内容并保存到指定文件中。确保该文件被安全存储以便后续恢复使用。 --- #### 停止服务并卸载旧版 停止正在运行的服务以防止数据损坏: ```bash sudo systemctl stop mariadb ``` 接着移除旧版本的相关包(具体命令取决于操作系统)。例如,在基于 Debian 的系统上可执行如下指令: ```bash sudo apt-get remove --purge mariadb-server mariadb-client ``` --- #### 安装新版 MariaDB 通过官方仓库获取最新稳定版本 (此处假设目标版本为 10.5.0),首先添加对应的 APT/YUM 源地址: 对于 Ubuntu/Debian 用户: ```bash sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.mephi.ru/mariadb/repo/10.5/debian buster main' sudo apt update sudo apt install mariadb-server ``` 对于 CentOS/RHEL 用户: ```bash cat <<EOF | sudo tee /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = https://downloads.mariadb.org/mariadb/repos/rhel/$releasever/\$basearch/ gpgkey=https://downloads.mariadb.org/mariadb/gpgkey gpgcheck=1 enabled=1 module_hotfixes=1 EOF sudo yum makecache fast && sudo yum upgrade -y sudo yum install mariadb-server ``` 完成后启动新的服务实例,并验证其状态正常工作: ```bash sudo systemctl start mariadb sudo mysqladmin version ``` --- #### 数据迁移与校验 重新导入先前创建的数据副本,确保一切功能完好无损: ```bash mysql < all_databases_backup.sql ``` 最后测试连接以及查询语句能否顺利返回预期的结果。 --- #### 注意事项总结 1. **检查依赖关系**:某些插件或者扩展库可能会因 API 变化而失效,请提前查阅文档解决潜在冲突。 2. **更新客户端工具链**:同步升级 MySQL CLI 工具及其他关联组件以防协议差异引发异常行为。 3. **监控性能指标**:观察 CPU 使用率、磁盘 I/O 和内存消耗情况是否有显著波动;必要时优化索引结构或调整缓冲池大小等高级选项。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值