2026/5/18 17:45:19
网站建设
项目流程
做网站哪些,上市公司,wordpress博客加相册,什么是网站销售C 后端面试必刷大厂算法题 文章目录C 后端面试必刷大厂算法题一、3.无重复字符的最长子串二、146. LRU 缓存三、四、五、六、七、八、九、十、十一、十二、十三、十四、十五、十六、十七、十八、十九、二十、总结一、3.无重复字符的最长子串 做到吐#xff01; 代码如下#…C 后端面试必刷大厂算法题文章目录C 后端面试必刷大厂算法题一、3.无重复字符的最长子串二、146. LRU 缓存三、四、五、六、七、八、九、十、十一、十二、十三、十四、十五、十六、十七、十八、十九、二十、总结一、3.无重复字符的最长子串做到吐代码如下示例class Solution{public:intlengthOfLongestSubstring(string s){intns.size(),left0,right0,ret0;inthash[128];while(rightn){hash[s[right]];while(hash[s[right]]1){hash[s[left]]--;}retmax(ret,right-left1);right;}returnret;}};二、146. LRU 缓存代码如下示例// 官方答案structDLinkedNode{intkey,value;DLinkedNode*prev;DLinkedNode*next;};class LRUCache{private:unordered_mapint,DLinkedNode*cache;DLinkedNode*head;DLinkedNode*tail;intsize;intcapacity;public:LRUCache(int_capacity):capacity(_capacity),size(0){// 使用伪头部和伪尾部节点headnewDLinkedNode();tailnewDLinkedNode();head-nexttail;tail-prevhead;}intget(intkey){if(!cache.count(key)){return-1;}// 如果 key 存在先通过哈希表定位再移到头部DLinkedNode*nodecache[key];moveToHead(node);returnnode-value;}voidput(intkey,intvalue){if(!cache.count(key)){// 如果 key 不存在创建一个新的节点DLinkedNode*nodenewDLinkedNode(key,value);// 添加进哈希表cache[key]node;// 添加至双向链表的头部addToHead(node);size;if(sizecapacity){// 如果超出容量删除双向链表的尾部节点DLinkedNode*removedremoveTail();// 删除哈希表中对应的项cache.erase(removed-key);// 防止内存泄漏delete removed;--size;}}else{// 如果 key 存在先通过哈希表定位再修改 value并移到头部DLinkedNode*nodecache[key];node-valuevalue;moveToHead(node);}}voidaddToHead(DLinkedNode*node){node-prevhead;node-nexthead-next;head-next-prevnode;head-nextnode;}voidremoveNode(DLinkedNode*node){node-prev-nextnode-next;node-next-prevnode-prev;}voidmoveToHead(DLinkedNode*node){removeNode(node);addToHead(node);}DLinkedNode*removeTail(){DLinkedNode*nodetail-prev;removeNode(node);returnnode;}};三、代码如下示例四、代码如下示例五、代码如下示例六、代码如下示例七、代码如下示例八、代码如下示例九、代码如下示例十、代码如下示例十一、代码如下示例十二、代码如下示例、十三、代码如下示例十四、代码如下示例十五、代码如下示例十六、代码如下示例十七、代码如下示例十八、代码如下示例十九、代码如下示例二十、代码如下示例总结这篇文章是作者搜集大量面经和资料这里出来的。感谢你的支持作者wkm是一名中国矿业大学(北京) 大一的新生希望得到你的关注如果可以的话记得一键三联