news 2026/6/23 8:28:54

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/6/23 16:49:53

Ubuntu下Qt/C++程序终止全攻略

在Ubuntu系统中&#xff0c;结合Qt和C开发的应用程序可通过以下多种方式安全或强制终止&#xff0c;具体可分为系统级、Qt框架、C标准及线程管理四大类&#xff1a;系统级方法终端命令kill/pkill/killall&#xff1a;通过进程ID或名称发送信号&#xff08;如SIGTERM正常终止&am…

作者头像 李华
网站建设 2026/6/24 0:37:38

Linux信号处理:SIGTERM的底层机制与应用控制

1.Linux信号处理&#xff1a;SIGTERM的底层机制与应用控制在Linux/Unix系统中&#xff0c;捕获SIGTERM信号的行为是由应用程序自主实现的&#xff0c;操作系统仅提供信号传递的底层机制和默认处理逻辑。以下是技术层面的详细解析&#xff1a;1. 操作系统内核的职责信号传递机制…

作者头像 李华
网站建设 2026/6/24 0:07:11

QCoreApplication::applicationDirPath: Please instantiate the QApplication object first

这个错误的核心原因在于QCoreApplication::applicationDirPath()函数必须在QApplication&#xff08;或QCoreApplication&#xff09;实例化之后才能调用。以下是详细分析和解决方案&#xff1a;错误原因分析Qt应用初始化顺序要求Qt框架规定&#xff1a;任何涉及应用程序上下文…

作者头像 李华
网站建设 2026/6/24 0:58:04

12bit 100MHz pipelined SAR ADC模数转换器 设计 65nm工艺,电...

12bit 100MHz pipelined SAR ADC模数转换器 设计 65nm工艺&#xff0c;电源电压1.2V,ENOB11.6 有详细教程原理文档 有工艺库&#xff0c;直接导入自己的cadence [绿圆]结构: 栅压自举开关 CDAC 两级动态比较器 第一级6位SAR ADC 余量放大器 第二级8位SAR ADC 同步和异步SAR l…

作者头像 李华