【优选算法题练习】day6

news2025/1/18 20:17:48

文章目录

  • 一、76. 最小覆盖子串
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 二、704. 二分查找
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 三、34. 在排序数组中查找元素的第一个和最后一个位置
    • 1.题目简介
    • 2.解题思路
    • 3.代码
    • 4.运行结果
  • 总结


一、76. 最小覆盖子串

1.题目简介

76. 最小覆盖子串
给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。
注意:对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
如果 s 中存在这样的子串,我们保证它是唯一的答案。
在这里插入图片描述
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    string minWindow(string s, string t) {
        int n = s.size(), m = t.size();
        vector<int> vt(128);
        for(auto& e : t)
        {
            vt[e]++;
        }
        vector<int> vs(128, 0);
        int count = 0;
        int len = INT_MAX;
        int begin = 0;
        for(int left = 0, right = 0;right < n; ++right)
        {
            char t = s[right];
            if(++vs[t] <= vt[t]) count++;
            while(count == m)
            {
                len < (right - left + 1) ? len : (len = (right - left + 1), begin = left);
                char t = s[left];
                if(vs[t]-- <= vt[t]) count--;
                left++;
            }
        }
        if(len == INT_MAX) return "";
        return s.substr(begin, len);
    }
};

4.运行结果

在这里插入图片描述

二、704. 二分查找

1.题目简介

704. 二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int left = 0, right = nums.size() - 1;
        while(left <= right)
        {
            int mid = left + (right - left) / 2;
            if(nums[mid] < target)
            {
                left = mid + 1;
            }
            else if(nums[mid] > target)
            {
                right = mid - 1;
            }
            else
            {
                return mid;
            }
        }
        return -1;
    }
};

4.运行结果

在这里插入图片描述

三、34. 在排序数组中查找元素的第一个和最后一个位置

1.题目简介

34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [-1, -1]。
你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。
在这里插入图片描述

2.解题思路

3.代码

class Solution {
public:
    int _bsearch(vector<int>& nums, int target)
    {
        int left = 0, right = nums.size() - 1;
        while(left <= right)
        {
            int mid = left + (right - left) / 2;
            if(nums[mid] < target)
            {
                left = mid + 1;
            }
            else
            {
                right = mid - 1;
            }
        }
        return right + 1;
    }
    int _esearch(vector<int>& nums, int target)
    {
        int left = 0, right = nums.size() - 1;
        while(left <= right)
        {
            int mid = left + (right - left) / 2;
            if(nums[mid] <= target)
            {
                left = mid + 1;
            }
            else
            {
                right = mid - 1;
            }
        }
        return left - 1;
    }
    vector<int> searchRange(vector<int>& nums, int target) {
        int begin = _bsearch(nums, target);
        int end = _esearch(nums, target);
        if(begin <= end && end < nums.size() && begin >= 0)
        return {begin, end};
        return {-1, -1};
    }
};

4.运行结果

在这里插入图片描述


总结

今天是算法练习的第6天。
锲而不舍,金石可镂 ,继续加油。
来源:力扣(LeetCode),著作权归领扣网络所有。
如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/755096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDE /字符串 /字符编码与文本文件(如cpp源代码文件)

文章目录 概述文本编辑器如何识别文件的编码格式优先推测使用了UTF-8编码&#xff1f;字符编码的BOM字节序标记重分析各文本编辑器下的测试效果Qt Creator的文本编辑器系统记事本VS的文本编辑器Notepad 编译器与代码文件的字符编码ANSI编码其他 概述 前期在整理 《IDE/VS项目属…

Unity VR 开发教程 OpenXR+XR Interaction Toolkit(九)根据不同物体匹配对应的抓取手势

文章目录 &#x1f4d5;教程说明&#x1f4d5;前置准备&#x1f4d5;HandData 脚本存储手部数据&#x1f4d5;制作预设手势&#x1f4d5;手势匹配脚本 GrabHandPose⭐完整代码⭐需要保存的数据⭐得知什么时候开始抓取和取消抓取⭐将手势数据赋予手部模型⭐平滑变化手势⭐开始抓…

Linux重定向符怎么用/Centos和Ubuntu怎么安装软件?Vim编辑器是啥、又怎么用/Linux权限怎么修改设置

前情提要&#xff1a;经过一段时间的沉淀&#xff0c;因为要用到Linux&#xff0c;索性就梳理总结一下Linux的基本知识&#xff01; 紧接着前文&#xff0c;有需要点击这里查看哦&#xff01;(╹▽╹) 3.10 echo命令 作用&#xff1a;在命令行内输出指定内容语法&#xff1a;…

Windows多网卡通过跃点数设置网络优先级失败解决办法

在有多个网卡的情况下&#xff0c;网络优先级往往不是自己所需的&#xff0c;默认情况Windows会自动决策出应该优先使用的最佳网络连接顺序&#xff0c;但用户也有可能需要访问某一网卡所在内网等情况&#xff0c;此时可能就无法正常访问。网上查找可以通过修改跃点数的方式手动…

XUbuntu22.04之解决蓝牙鼠标不停掉线问题(追凶过程)(一百八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

python_day8_bar

初识柱状图 导包 from pyecharts.charts import Bar from pyecharts.options import *创建柱状图对象 bar Bar()添加x轴数据,注意数据格式为列表 bar.add_xaxis([中国, USA, 不列颠])添加y轴数据,注意格式&#xff1a;图例&#xff0c;列表数据&#xff0c;设置 bar.add_…

Stable Diffusion Webui 之 ControlNet使用

一、安装 1.1、插件安装 1.2、模型安装 模型安装分为预处理模型和 controlnet所需要的模型。 先安装预处理模型&#xff0c;打开AI所在的安装目录\extensions\sd-webui-controlnet\annotator,将对应的预处理模型放进对应的文件夹中即可&#xff0c; 而controlnet所需模型则…

wordpress主题zibll子比主题v7.2.2绕授权+教程

1、先说一下要准备的东西 一份子比7.1正式包&#xff0c;一台服务器&#xff0c;wp6.2.2正式包&#xff08;wordpress&#xff09;&#xff0c;一个域名 2、首先把wp上传服务器的域名根目录下&#xff0c;然后打开前台按要求填写数据库和管理员邮箱账号密码&#xff0c;php版本…

0129 进程与线程3

目录 2.进程与线程 2.4死锁 2.4部分习题 2.进程与线程 2.4死锁 2.4部分习题 1.死锁的避免是根据&#xff08;&#xff09;采取措施实现的 A.配置足够多的系统资源 B.使进程推进顺序合理 C.破坏死锁的四个必要条件之一 D.防止系统进入不安全状态 2.死锁…

HTML5和CSS3新特性

文章目录 1.HTML5新特性1.1 概述1.2 语义化标签1.3 多媒体标签1.3.1 视频标签- video1.3.2 音频标签- audio 1.4 新增的表单元素1.5 新增表单属性 2.CSS3新特性2.1新增选择器2.1.1 属性选择器2.1.2 结构伪类选择器E:first-childE:nth-child(n)E:nth-child 与 E:nth-of-type 的区…

7个有用的Prompt参数

ChatGPT和Midjournal使得生成式人工智能的应用程序激增。当涉及到生成式AI时&#xff0c;"prompt"通常指的是作为输入给模型的初始提示或指示。它是一个短语、问题、句子或段落&#xff0c;用来引导模型生成相关的响应或文本。 在使用生成式AI模型时&#xff0c;提供…

form 校验多个表单

有的时候&#xff0c;表单需要拆开多个&#xff0c;这时候就需要校验多个表单 <template><div><div>表单1</div><div class"top"><el-form :model"form" ref"form1" :rules"rules" label-width&quo…

ylb-接口9登录短信发送

总览&#xff1a;&#xff08;总体功能与注册发送短信功能相似&#xff09; 在web模块service.impl包下&#xff0c;创建SmsCodeLoginImpl&#xff0c;实现的还是SmsService接口 package com.bjpowernode.front.service.impl;import com.alibaba.fastjson.JSONObject; impor…

2023机器人操作系统(ROS)暑期学校报名通道开启-转发-

来源请查看&#xff1a; https://mp.weixin.qq.com/s/gVr4pUG2TGT6sCcGKvVnYw 报名等请使用上面给出地址。 面向对象&#xff1a;机器人/人工智能相关专业教师/学生/工程师 要求&#xff1a;ROS零基础/中高级 费用&#xff1a;免费&#xff0c;食宿自理 时间&#xff1a;2023…

3.2 多路复用和多路分用

3.2 多路复用和多路分用 多路复用/分用分用如何工作&#xff1f;无连接分用面向连接的分用面向连接的分用&#xff1a;多线程Web服务器 多路复用/分用 分用如何工作&#xff1f; 主机接收到IP数据报(datagram) 每个数据报携带源IP地址、目的IP地址。每个数据报携带一个传输层的…

Java中字符串相关的类

目录 String类 StringBuffer类 StringBuilder类 String类 String类&#xff1a;代表字符串。Java 程序中的所有字符串字面值&#xff08;如 "abc" &#xff09;都作为此类的实例实现。 String是一个final类&#xff0c;代表不可变的字符序列。 字符串是常量&…

[论文分享]MR-MAE:重构前的模拟:用特征模拟增强屏蔽自动编码器

论文题目&#xff1a;Mimic before Reconstruct: Enhancing Masked Autoencoders with Feature Mimicking 论文地址&#xff1a;https://arxiv.org/abs/2303.05475 代码地址&#xff1a;https://github.com/Alpha-VL/ConvMAE&#xff08;好像并未更新为MR-MAE模型&#xff09; …

不容错过!10个Python自动化办公库免费送!(上)

大家好&#xff0c;这里是程序员晚枫&#xff0c;小红薯也叫这个名。 今天给大家分享一下&#xff0c;花费2周时间整理的Python自动化办公库。 本次内容涵盖了Excel、Word、PPT、PDF、微信、文件处理等所有能在办公场景实现自动化的库&#xff0c;希望能够对大家有所帮助。 提…

部署LAMP 平台(二十四)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、概述 二、PHP安装配置 1. PHP的作用 2. PHP安装 2.1 yum安装 2.2 PHP语言简介 三、安装 四、启动 五、书写测试页面 六、客户端访问 七、书写连接数据库页…

C++图形开发(13):得分系统

文章目录 1.定义变量2.得分系统3.分数清零系统4.输出分数5.整段代码 今天来对这个“别碰方块”的游戏进行一个完善&#xff0c;并增加一个得分系统 1.定义变量 首先是定义用于储存得分的变量&#xff1a; int score 0;2.得分系统 那么怎样才能得分呢&#xff1f; 没错&…