【每日刷题】Day104

news2025/2/6 3:51:02

【每日刷题】Day104

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 3. 无重复字符的最长子串 - 力扣(LeetCode)

2. 1004. 最大连续1的个数 III - 力扣(LeetCode)

3. 704. 二分查找 - 力扣(LeetCode)

1. 3. 无重复字符的最长子串 - 力扣(LeetCode)

//解法一:暴力枚举+哈希表。

//暴力遍历所有的子数组,记录最长子数组的长度

class Solution {

public:

    int lengthOfLongestSubstring(string s)

    {

        int ans = 0;

        for(int i = 0;i<s.size();i++)

        {

            int hash[128] = {0};

            int j = i;

//利用哈希表判断字符是否重复出现

            while(j<s.size()&&!hash[s[j]])

            {

                hash[s[j]] = 1;

                j++;

            }

//记录最大子数组长度

            ans = ans>(j-i)?ans:(j-i);

        }

        return ans;

    }

};

//解法二:滑动窗口+哈希表。

//解法二是在解法一的基础上进行优化的:

class Solution {

public:

    int lengthOfLongestSubstring(string s)

    {

        int ans = 0;

        int i = 0;

        int j = 0;

        int hash[128] = {0};

        while(j<s.size())

        {

//判断是否为重复字符

//如果不是:

            if(!hash[s[j]])

            {

//将该字符放入哈希表

                hash[s[j]] = 1;

                j++;

//更新最长子数组长度

                ans = ans>(j-i)?ans:(j-i);

            }

//如果是

            else

            {

//将i跳到与j相同字符的下一个位置,再将j++

                while(s[i]!=s[j])

                {

                    hash[s[i]] = 0;

                    i++;

                }

                i++;

                j++;

            }

        }

        return ans;

    }

};

2. 1004. 最大连续1的个数 III - 力扣(LeetCode)

//解法一:暴力枚举+计数器

//暴力枚举每一个 0的个数不超过k 的子区间,记录最大子区间长度

class Solution {

public:

    int longestOnes(vector<int>& nums, int k)

    {

        int ans = 0,i = 0,j = 0,tmp = k;

        while(j<nums.size())

        {

//如果值为1,继续向后遍历

            if(nums[j])

                j++;

            else

            {

//如果值为0,判断是否还能够翻转0,如果可以,则消耗一次翻转次数,向后遍历

                if(tmp)

                {

                    j++;

                    tmp--;

                }

//如果翻转次数耗尽,则重置翻转次数,记录最大长度,i++,j = i 进入下一个区间继续枚举

                else

                {

                    tmp = k;

                    ans = ans>(j-i)?ans:(j-i);

                    i++;

                    j = i;

                }

            }

        }

        ans = ans>(j-i)?ans:(j-i);

        return ans;

    }

};

//解法二:滑动窗口+计数器

//解法二也是在解法一的基础上面优化出来的:

class Solution {

public:

    int longestOnes(vector<int>& nums, int k)

    {

        int ans = 0,i = 0,j = 0,zero = 0;

        while(j<nums.size())

        {

//如果值为1,j继续向后遍历

            if(nums[j])

                j++;

            else

            {

//否则,如果zero计数器<=k,则zer++,再次判断zero是否<=k,如果依然<=k,则让j向后遍历

                if(zero<=k)

                {

                    zero++;

                    if(zero<=k)

                        j++;

                }

//如果zero>k,记录最大长度,将i遍历到合法的区间内

                else

                {

                    ans = ans>(j-i)?ans:(j-i);

                    while(zero>k)

                    {

                        if(!nums[i])

                            zero--;

                        i++;

                    }

                    j++;

                }

            }

        }

        ans = ans>(j-i)?ans:(j-i);

        return ans;

    }

};

3. 704. 二分查找 - 力扣(LeetCode)

//思路:二分查找的实现。

//定义left、right和mid三个指针,left指向首元素right指向尾元素,mid指向left和right形成区间的中间的元素。

//如果mid指向元素 < target,让left = mid + 1 缩小区间

//如果mid指向元素 > target,让right = mid - 1 缩小区间

//如果mid指向元素 == target 返回mid

//如果循环结束,mid指向元素 != target,返回-1

class Solution {

public:

    int search(vector<int>& nums, int target)

    {

        int left = 0;

        int right = nums.size()-1;

        int mid;

        while(left<=right)

        {

//mid指向left和right形成区间的中间的元素

            mid = (left+right)/2;

//缩小区间

            if(nums[mid]<target)

                left = mid+1;

            else if(nums[mid]>target)

                right = mid-1;

//找到target,返回mid

            else

                return mid;

        }

//循环结束说明没找到target,返回-1

        return -1;

    }

};

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

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

相关文章

RabbitMQ环境搭建

2.5.RabbitMQ 安装 a.docker方式安装&#xff1a; 1.在我的docker学习笔记中具有详细的安装过程 b.rpm包方式安装&#xff1a; 1.MQ下载地址2.这里是提前下载好后上传安装包到服务器得opt目录下&#xff1a; 3.安装MQ需要先有Erlang语言环境&#xff0c;安装文件的Linux命令…

机器学习:逻辑回归--下采样

目录 前言 一、为什么使用下采样 1.例如&#xff1a; 2.导致&#xff1a; 3.办法&#xff1a; 4.结果&#xff1a; 二、代码实现 1.完整代码 2.导入库 3.可视化混淆矩阵 4.导入数据 5数据预处理 6.下采样 7.取出训练集和测试集 8.建立模型 9.进行测试 总结 前…

Spring模块详解Ⅰ

目录 SpringSpring框架的主要功能模块1. Core Container&#xff08;核心容器&#xff09;2. Data Access/Integration&#xff08;数据访问与集成&#xff09;3. Web4. AOP (Aspect-Oriented Programming&#xff0c;面向切面编程)5. Instrumentation&#xff08;工具集&#…

CentOS7设置默认免密登录用户root

CentOS7设置默认免密登录用户root 步骤1、打开要更改的 CentOS 系统2、切换到root用户2、reboot重启系统 步骤 1、打开要更改的 CentOS 系统 2、切换到root用户 2、reboot重启系统

前端(Vue)动态换肤的通用解决方案及原理分析(1)

动态换肤原理分析 比如此处将来会实现换肤功能&#xff0c;所以我们不能直接写死&#xff0c;而需要通过一个动态的值进行指定。 <el-menu:default-active"activeMenu":collapse"!$store.getters.sidebarOpened":background-color"$store.getters…

手机使用技巧:如何恢复Android手机不见的短信

在您的 Android 手机上丢失短信可能是一种令人沮丧的经历&#xff0c;尤其是在文本包含重要信息的情况下。幸运的是&#xff0c;有一些方法可以在Android上恢复已删除的短信。在这篇博文中&#xff0c;我们将讨论几种在Android手机上恢复已删除短信的方法。 为什么需要恢复Andr…

测绘程序设计|认识VS2017|VS2017新建项目|VS2017使用技巧

由于微信公众号改变了推送规则&#xff0c;为了每次新的推送可以在第一时间出现在您的订阅列表中&#xff0c;记得将本公众号设为星标或置顶喔~ 分享了如何使用VS2017新建项目、VS2017的项目结构以及一些使用技巧~ &#x1f33f;前言 Visual Studio作为微软旗下一款热门的编程…

C语言典型例题46

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 题目&#xff1a; 习题3.6 企业发放的奖金根据利润提成。利润I低于或等于100 000元的&#xff0c;奖金可提成10%&#xff1b; 利润高于100 000元&#xff0c;低于200000元&…

干货分享!渗透测试成功的8个关键

01 知道为什么要测试 执行渗透测试的目的是什么&#xff1f;是满足审计要求&#xff1f;是你需要知道某个新应用在现实世界中表现如何&#xff1f;你最近换了安全基础设施中某个重要组件而需要知道它是否有效&#xff1f;或者渗透测试根本就是作为你定期检查防御健康的一项例行…

2024年【电工(高级)】试题及解析及电工(高级)复审考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【电工&#xff08;高级&#xff09;】试题及解析及电工&#xff08;高级&#xff09;复审考试&#xff0c;包含电工&#xff08;高级&#xff09;试题及解析答案和解析及电工&#xff08;高级&#xff09;复审…

C语言——字符函数、字符串函数和内存函数

目录 1.字符分类函数 2.字符转换函数 3.字符串函数 3.1strlen 函数 3.1.1 strlen函数的模拟实现 3.1.1.1第一种方法&#xff1a;计算器方法 3.1.1.2 第二种方法&#xff1a;指针-指针 3.1.1.3 第三种方法&#xff1a;递归 3.2 strcpy 函数 3.2.1 strcpy函数的模拟实现…

成为Python砖家(4): 装饰器的简单理解

第一次理解 Python 中的装饰器&#xff08;decorator&#xff09;&#xff0c;是Python中一个非常强大的工具&#xff0c;它是一个返回函数的函数。 上面这个定义很简洁&#xff0c;但是没说清楚。 第二次理解 装饰器&#xff0c;是一个接收函数 func、返回封装后的函数 wr…

计算机Java项目|基于SpringBoot的农商对接系统的设计与实现

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参…

基于Shader实现的UGUI描边解决方案遇到的bug

原文链接&#xff1a;https://www.cnblogs.com/GuyaWeiren/p/9665106.html 使用这边文章介绍的描边解决方案时遇到了一些问题&#xff0c;就是文字的描边经常会变粗&#xff0c;虽然有的时候也可以正常显示描边&#xff0c;但是运行一会儿描边就不正常了&#xff0c;而且不正常…

【数据分享】《新疆省统计年鉴》(2000-2022)

而今天要限时免费分享的数据就是2000-2022年间出版的《新疆省统计年鉴》并以多格式提供免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 《新疆省统计年鉴》是记录新疆维吾尔自治区历年来社会经济发展情况的重要资料汇编&#xff0c;涵盖了从2000年至…

海外仓物流的最后一步至关重要!电商的复购、好评全都要靠它!

在跨境电商物流链中&#xff0c;尾程派送是直接影响消费者购物体验的关键环节。作为物流流程的最后一步&#xff0c;尾程派送的效率和准确性关系到商品能否及时、安全地送达客户手中。这不仅关乎消费者的满意度&#xff0c;也关乎电商企业的品牌形象和市场竞争力。尤其是在依托…

睡眠质量不好该怎么调理

1、运动&#xff1a;睡前多做些小运动&#xff0c;但不要做太剧烈的运动&#xff0c;比如跑步、散步、打太极拳等&#xff0c;适当的运动有益于睡眠。   2、远离扰乱睡眠的食物&#xff1a;不要喝咖啡、茶和其他刺激性的重口味的东西。睡前最好喝一杯牛奶或温水&#xff0c;这…

字节序大小端

概述 1. MSB、LSB2. 最高有效字节、最低有效字节3. 大小端4. 如何判断本机大小端5. 大小端转换 1. MSB、LSB 以整数“157”为例 MSB &#xff1a;单个字节中的最高位 2^7 128 LSB &#xff1a;单个字节中的最低位 2^0 0 2. 最高有效字节、最低有效字节 以整形“0x0102030…

极速闪存启动:SD与SPI模式的智能初始化指南

最近很多客户朋友在询问我们 CS 创世 SD NAND 能不能使用 SPI 接口&#xff0c;两者使用起来有何区别&#xff0c;下面为大家详细解答。 SD MODE: CS 创世 SD NAND 支持 SD 模式和 SPI 模式&#xff0c;SD NAND 默认为 SD 模式&#xff0c;上电后&#xff0c;其初始化过程如下…

【MySQL】5.0 入门学习(五)——MySQL源码了解及MySQL初始化设置

1.0 MySQL源码目录主要包括&#xff1a;客户端代码、服务端代码、测试工具、其他库文件。当然&#xff0c;看懂源代码得有一定的C语言基础。 image image.gif ​ BUILD&#xff1a;各种平台的编译脚本&#xff0c;可以用来制作各平台的二进制版本 client&#xff1a;客户端目录…