news 2026/7/10 12:14:00

C++ 后端面试必刷大厂算法题(附代码实现)第一期

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ 后端面试必刷大厂算法题(附代码实现)第一期

C++ 后端面试必刷大厂算法题


文章目录

  • C++ 后端面试必刷大厂算法题
  • 一、3.无重复字符的最长子串
  • 二、146. LRU 缓存
  • 三、
  • 四、
  • 五、
  • 六、
  • 七、
  • 八、
  • 九、
  • 十、
  • 十一、
  • 十二、
  • 十三、
  • 十四、
  • 十五、
  • 十六、
  • 十七、
  • 十八、
  • 十九、
  • 二十、
  • 总结

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


做到吐!

代码如下(示例):

class Solution{public:intlengthOfLongestSubstring(string s){intn=s.size(),left=0,right=0,ret=0;inthash[128];while(right<n){hash[s[right]]++;while(hash[s[right]]>1){hash[s[left++]]--;}ret=max(ret,right-left+1);right++;}returnret;}};

二、146. LRU 缓存

代码如下(示例):

// 官方答案structDLinkedNode{intkey,value;DLinkedNode*prev;DLinkedNode*next;};class LRUCache{private:unordered_map<int,DLinkedNode*>cache;DLinkedNode*head;DLinkedNode*tail;intsize;intcapacity;public:LRUCache(int_capacity):capacity(_capacity),size(0){// 使用伪头部和伪尾部节点head=newDLinkedNode();tail=newDLinkedNode();head->next=tail;tail->prev=head;}intget(intkey){if(!cache.count(key)){return-1;}// 如果 key 存在,先通过哈希表定位,再移到头部DLinkedNode*node=cache[key];moveToHead(node);returnnode->value;}voidput(intkey,intvalue){if(!cache.count(key)){// 如果 key 不存在,创建一个新的节点DLinkedNode*node=newDLinkedNode(key,value);// 添加进哈希表cache[key]=node;// 添加至双向链表的头部addToHead(node);++size;if(size>capacity){// 如果超出容量,删除双向链表的尾部节点DLinkedNode*removed=removeTail();// 删除哈希表中对应的项cache.erase(removed->key);// 防止内存泄漏delete removed;--size;}}else{// 如果 key 存在,先通过哈希表定位,再修改 value,并移到头部DLinkedNode*node=cache[key];node->value=value;moveToHead(node);}}voidaddToHead(DLinkedNode*node){node->prev=head;node->next=head->next;head->next->prev=node;head->next=node;}voidremoveNode(DLinkedNode*node){node->prev->next=node->next;node->next->prev=node->prev;}voidmoveToHead(DLinkedNode*node){removeNode(node);addToHead(node);}DLinkedNode*removeTail(){DLinkedNode*node=tail->prev;removeNode(node);returnnode;}};

三、

代码如下(示例):


四、

代码如下(示例):


五、

代码如下(示例):


六、

代码如下(示例):


七、

代码如下(示例):


八、

代码如下(示例):


九、

代码如下(示例):


十、

代码如下(示例):


十一、

代码如下(示例):


十二、

代码如下(示例):


十三、

代码如下(示例):


十四、

代码如下(示例):


十五、

代码如下(示例):


十六、

代码如下(示例):


十七、

代码如下(示例):


十八、

代码如下(示例):


十九、

代码如下(示例):


二十、

代码如下(示例):



总结

这篇文章是作者搜集大量面经和资料这里出来的。感谢你的支持
作者wkm是一名中国矿业大学(北京) 大一的新生,希望得到你的关注
如果可以的话,记得一键三联!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 14:07:57

[UUCTF 2022 新生赛]ezpop

1.打开先看代码<?php //flag in flag.php error_reporting(0); class UUCTF{public $name;public $key;public $basedata;public $ob;function __construct($str){$this->name$str;}function __wakeup(){if($this->key"UUCTF"){$this->obunserialize(ba…

作者头像 李华
网站建设 2026/7/9 19:13:02

盛水最多的容器(滑动窗口 双指针)

这道题当然可以暴力求解&#xff0c;O(N^2),但是有时候并不会通过&#xff0c;因此要想一个时间复杂度为O&#xff08;N&#xff09;的方法。如果说用滑动窗口肯定会有人会有疑问&#xff0c;这怎么用&#xff1f;下面直接说解法&#xff1a;首先left与right分别指向数组的两边…

作者头像 李华
网站建设 2026/7/8 21:44:10

深度探究Span:.NET内存布局与零拷贝原理及实践

深度探究Span&#xff1a;.NET内存布局与零拷贝原理及实践 在.NET开发中&#xff0c;高效的内存管理至关重要&#xff0c;尤其在处理高性能、低延迟的应用场景时。Span<T> 类型应运而生&#xff0c;它为开发者提供了一种灵活且高效的内存操作方式&#xff0c;能够显著提升…

作者头像 李华
网站建设 2026/7/7 20:18:33

helm 部署 elasticsearch 栈

说明:本文使用的 chart 仓库名字为 elastic/cloud-on-k8s 地址为 elastic/cloud-on-k8s。 1、添加 repo 源 helm repo add elastic https://helm.elastic.co helm repo update2、安装 eck-operator ⚠️说明:ECK Operator(Elastic Cloud on Kubernetes)本身安装的东西其…

作者头像 李华
网站建设 2026/7/10 2:30:24

Qt定时器线程使用全解析

1.Qt定时器线程使用全解析在Qt框架中&#xff0c;定时器&#xff08;如QTimer&#xff09;的“使用线程”特指其所属线程&#xff08;即创建该定时器的线程&#xff09;必须是由QThread启动并管理、且运行了事件循环&#xff08;exec()&#xff09;的线程。这一规则涉及线程的创…

作者头像 李华
网站建设 2026/7/9 3:28:20

低代码开发的“真香”定律:从排斥到离不开

在数字化工具迭代的历史中&#xff0c;几乎所有颠覆性技术都曾经历过“从排斥到追捧”的转折——智能手机初现时&#xff0c;有人质疑“不如功能机耐用”&#xff1b;云计算普及前&#xff0c;企业担忧“数据放在云端不安全”&#xff1b;低代码开发如今的处境&#xff0c;亦复…

作者头像 李华