LeetCode热题100刷题3:3. 无重复字符的最长子串、438. 找到字符串中所有字母异位词、560. 和为 K 的子数组

news2024/10/7 16:16:24

3. 无重复字符的最长子串

滑动窗口、双指针

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        //滑动窗口试一下
        //英文字母、数字、符号、空格,ascii 一共包含128个字符
        vector<int> pos(128,-1);
        int ans = 0;
        
        for(int i=0,j=0 ; i<s.size();i++) {
            //s[i]已出现过   pos[s[i]]+1 上次出现位置的下一个位置
            j = max(pos[s[i]]+1,j);
            //比较窗口的大小
            ans = max(ans,i-j+1);
            pos[s[i]] = i;
        }
        return ans;
    }
};

438. 找到字符串中所有字母异位词

统计字符出现的次数

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        int ssize = s.size();
        int psize = p.size();
        if(ssize < psize)
            return {};
        vector<int> ans;
        vector<int> count_s(26);
        vector<int> count_p(26);
        for(int i=0;i<psize;i++) {
            count_p[p[i]-'a']++;
            count_s[s[i]-'a']++;
        }
        if(count_s == count_p)
            ans.push_back(0);
        
        for(int i=0;i<ssize-psize;i++) {
            count_s[s[i]-'a']--;
            count_s[s[i+psize]-'a']++;

            if(count_s == count_p) {
                ans.push_back(i+1);
            }
        }
        return ans;
    }
};

560. 和为 K 的子数组

前缀和、哈希表改进的前缀和

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        vector<int> presum(nums.size()+1);
        presum[0] = 0;
        int ans = 0;
        for(int i=0;i<nums.size();i++) {
            presum[i+1] = presum[i] + nums[i];
        }

        for(int i=1;i<=nums.size();i++) {
            for(int j=0;j<i;j++) {
                if(presum[i]-presum[j] == k)
                    ans++;
            }
        }
        return ans;
    }
};

在这里插入图片描述

class Solution {
public:
    int subarraySum(vector<int>& nums, int k) {
        int n = nums.size();

        unordered_map<int,int> presum;
        presum[0]=1;
        int ans = 0,sum_i = 0;

        for(int i=0;i<n;i++) {
            sum_i += nums[i];

            int sum_j = sum_i-k;
            if(presum.find(sum_j) != presum.end())
                ans += presum[sum_j];
            presum[sum_i]++;
        }
        return ans;
    }
};

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

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

相关文章

【Python网络通信】基于Bypy调用百度网盘api实现自动上传和下载网盘文件

网盘对于大家的生活工作可以说是息息相关&#xff0c;但是如果每天都重复去上传下载文件就会很浪费时间&#xff0c;所以有没有什么办法可以解放双手&#xff1f;那就是网盘接口&#xff0c;本文通过Bypy库实现百度网盘的自动上传和下载文件。 原创作者&#xff1a;RS迷途小书童…

java 面试题 - 索引

上脑图&#xff0c;大家要记住&#xff01;&#xff01; 看不清&#xff0c;上大图&#xff01; 这几总结就够用&#xff01;&#xff01;

SpringBoot苏桦旅游管理系统-计算机毕业设计源码02123

摘要 旅游业在全球范围内不断发展&#xff0c;为了提供高效的旅游管理和服务&#xff0c;开发一个旅游管理系统具有重要意义。本文旨在设计和实现该旅游管理系统&#xff0c;以满足用户和管理员的需求。该系统采用Spring Boot作为后端框架&#xff0c;利用其简化的开发流程和强…

六、【源码】应用上下文

源码地址&#xff1a;https://github.com/spring-projects/spring-framework 仓库地址&#xff1a;https://gitcode.net/qq_42665745/spring/-/tree/06-application-context 应用上下文 实现应用上下文的核心类&#xff1a; 1.ApplicationContext&#xff1a;Spring 应用上…

java设计模式(五)建造者模式(Builder Pattern)

1、模式介绍&#xff1a; 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许你创建一个复杂对象的表示&#xff0c;同时隐藏了创建细节。该模式将对象的构建过程和表示分离&#xff0c;使得相同的构建过程可以创建不同的表示。 2、应…

如何选择适合自己的巴比达内网穿透方案

选择适合自己的巴比达内网穿透方案&#xff0c;需要考虑几个关键因素&#xff0c;包括您的具体需求、安全性要求、技术水平以及预算。以下是一些选择巴比达内网穿透方案的建议步骤&#xff1a; 1. 确定需求和用途 首先&#xff0c;需要明确您希望通过内网穿透实现的具体目标和…

项目实战-MySQL极佳优化方案---前缀索引

一、应用背景 由于公司项目数据量较大&#xff0c;开发小程序和APP过程中&#xff0c;SQL查询超过1.5s以上的等待时间&#xff0c;因此需要对SQL或者数据表结构设计进行优化。就不讲SQL语句优化啦&#xff0c;而是记录一下数据表结构设计优化的前缀索引实现。 二、MySQL索引 …

Transformer拆积木

文章目录 ConceptsEmbeddingEncoderDecoderSelf-Attention matric calculationFinal Linear and Softmax LayerLoss function 参考 学一下已经问鼎中原七年之久的Transformer Concepts 开始拆积木&#xff01; Embedding Encoder Decoder Self-Attention matric calculati…

PHP房产小程序微信小程序系统源码

&#x1f3e0;—— 购房租房&#xff0c;一“指”搞定&#x1f3e1; &#x1f50d;【开篇&#xff1a;房产新视界&#xff0c;尽在掌握】 在这个信息爆炸的时代&#xff0c;找房子不再是一场漫长的奔波。有了“房产微信小程序”&#xff0c;无论是购房还是租房&#xff0c;都…

如何从Salesforce顾问转型为解决方案架构师?

在充满活力的Salesforce咨询领域&#xff0c;许多专业人士都希望从顾问转型为解决方案架构师。这种转型不仅需要掌握新技能&#xff0c;还需要从根本上改变思维方式。关键在于摆脱顾问典型的以职能为中心的思维模式&#xff0c;拥抱更广阔、更具战略性的视角。 从“如何”到“…

手把手教你在QQ微信上AI变声器安装和使用(软件下载)

获取方式&#xff1a;点击下载 你相信互联网上还有真的东西么&#xff1f;我反正越来越不相信了&#xff01; 比如&#xff0c;和你在网上眉来眼去语音撩骚的小姐姐&#xff0c;可能就是一个抠脚大汉。 而抠脚大汉&#xff0c;也可以是一个漂亮的小姐姐。 o(*&#xffe3;︶…

发表EI论文相当于SCI几区?

EI&#xff08;工程索引&#xff09;本身并不进行分区&#xff0c;它是一个收录工程领域高质量文献的数据库&#xff0c;与SCI&#xff08;科学引文索引&#xff09;的分区制度不同。然而&#xff0c;在非正式的学术评价中&#xff0c;有时人们会将EI与SCI的分区进行比较。 虽…

西南交通大学【算法分析与设计实验2】

实验2.3 m_Coloring算法时间复杂性分析 实验目的 &#xff08;1&#xff09;实验比较数据输入规模对算法执行时间的影响。 &#xff08;2&#xff09;实验比较不同算法对问题求解时间的影响。 &#xff08;3&#xff09;掌握算法时间效率的分析方法。 实验任务 &#xff0…

SwinIR: Image Restoration Using Swin Transformer(ICCV 2021)含代码复现

目录 一、Introduction 1 Motivation 2 Contribution 二、原理分析 1 Network Architecture 1&#xff09;Shallow feature extraction 2) deep feature extraction 3) image reconsruction modules 4) loss function 2 Residual Swin Transformer Block 三、实验结果…

认识String类

文章目录 String类字符串的遍历字符串的比较字符串的替换字符串的转换字符串的切割字符串的切片字符串的查找 总结 String类 在C语言中已经涉及到字符串了&#xff0c;但是在C语言中要表示字符串只能使用字符数组或者字符指针&#xff0c;可以使用标准库提 供的字符串系列函数完…

vue3实现echarts——小demo

版本&#xff1a; 效果&#xff1a; 代码&#xff1a; <template><div class"middle-box"><div class"box-title">检验排名TOP10</div><div class"box-echart" id"chart1" :loading"loading1"&…

WAF的新选择,雷池 SafeLine-安装动态防护使用指南

什么是 WAF WAF 是 Web Application Firewall 的缩写&#xff0c;也被称为 Web 应用防火墙。 区别于传统防火墙&#xff0c;WAF 工作在应用层&#xff0c;对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果&#xff0c;使其免于受到黑客的攻击&#xff1b; 通俗来讲&#…

什么是 MySQL 锁等待?

本文基于 MySQL 8.0.32 源码&#xff0c;存储引擎为 InnoDB。 1. 先排队 不管是加表锁&#xff0c;还是加行锁&#xff0c;如果不能立即获得锁&#xff0c;加锁事务都需要进入锁等待状态。 事务进入锁等待状态&#xff0c;需要用锁结构来排队。和立即获得锁时的锁结构一样&am…

【Python+微信小程序】学生考勤签到系统(已开源)

1. 简介 &#x1f61d; 这个项目是一款基于微信小程序和Flask框架开发的应用&#xff0c;旨在帮助学校管理学生的考勤和课程信息。系统通过集成数据库管理、API开发以及前后端交互&#xff0c;实现了便捷的学生考勤记录、课程表管理和教师交互功能。其主要特点包括&#xff1a…