news 2026/5/1 8:44:13

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/5/1 0:52:38

ComfyUI-SeedVR2视频超分辨率技术全面指南

项目亮点速览 【免费下载链接】ComfyUI-SeedVR2_VideoUpscaler Non-Official SeedVR2 Vudeo Upscaler for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-SeedVR2_VideoUpscaler &#x1f525; 核心优势&#xff1a;基于SeedVR2算法的专业级视频放大解决…

作者头像 李华
网站建设 2026/4/28 15:15:06

Qt关闭主窗体与quit()的深度解析

在Qt框架中&#xff0c;关闭主窗体&#xff08;通过close()方法&#xff09;和调用QApplication::quit()都是退出程序的方式&#xff0c;但它们在触发机制、资源管理、事件流程等方面存在显著差异。以下从技术实现和实际影响两个维度详细分析&#xff1a;1. 触发机制与事件循环…

作者头像 李华
网站建设 2026/5/1 8:20:37

Ubuntu进程终止全解析

在Ubuntu中&#xff0c;使用pkill -f 应用程序名终止应用程序的过程涉及信号传递、进程管理、资源回收等多个系统级操作。以下是详细的技术解析&#xff1a;1. 命令执行与信号发送pkill -f的工作原理pkill通过遍历系统进程列表&#xff08;如/proc文件系统&#xff09;&#xf…

作者头像 李华
网站建设 2026/4/28 3:39:46

5步掌握深空摄影堆栈神器:DeepSkyStacker让宇宙之美触手可及

想要拍摄出令人惊叹的深空星图却总是被噪点和模糊困扰&#xff1f;DeepSkyStacker这款专业的深空摄影堆栈工具能够帮你轻松解决这些问题。作为一款完全免费的开源软件&#xff0c;它通过智能的图像对齐和堆栈处理&#xff0c;让业余天文爱好者也能创作出专业级的宇宙影像。 【免…

作者头像 李华
网站建设 2026/5/1 7:17:28

17、RAC 环境下的应用开发技术解析

RAC 环境下的应用开发技术解析 在 RAC(Real Application Clusters)环境中进行应用开发,需要考虑诸多特定的开发概念和技术。本文将详细介绍 RAC 环境下应用开发的相关要点,包括实例与服务识别、多 SGA 应用、存储考虑、节点亲和性,以及一些高级编程技术,如透明应用故障转…

作者头像 李华
网站建设 2026/4/26 8:58:32

34、Python 数据持久化:简单与关系序列化方法详解

Python 数据持久化:简单与关系序列化方法详解 在 Python 编程中,数据持久化是一个重要的话题,它允许我们将数据保存到磁盘,以便后续使用。本文将介绍几种常见的数据持久化方法,包括简单序列化和关系序列化,并通过具体的代码示例进行详细说明。 简单序列化 简单序列化主…

作者头像 李华