![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题
西堂AI编程提效
一周三更编程干货
大厂程序员
厦大硕士
专注于AI编程提效、数字人领域
展开
-
map自定义结构体当键值
目录 1、map自定义键值注意事项 2、例题 2.1、题目 2.2、代码 1、map自定义键值注意事项 在自定义结构体中重载operator<()操作符 class package { public: string src_ip; int src_port; string des_ip; int des_port; //初始化 package(string ...原创 2020-03-14 22:25:50 · 345 阅读 · 0 评论 -
C++实现LRU Cache
1、算法思路: put操作思路: 用一个双向链表和一个哈希表; 每添加一个(key, value),先判断是否在哈希表中存在,如果存在,那么删除哈希表中的键值对和双向链表中的该元素; 再往双向链表头部增加添加的(key, value)和哈希表中增加(key,value); 最后判断是否超过capacity,若超过则弹出链表尾部元素和删除哈希表中该键值对。 优化: 哈希表中保存<...原创 2019-08-02 16:50:14 · 457 阅读 · 0 评论 -
滑动窗口内最大值
1、算法思路 双端队列方法:队列头部一直都是当前窗内的最大元素下标 deque1为空或队列尾元素大于等于当前元素,入队列; 队列尾元素小于当前元素,弹出队尾元素,确保队列头部是最大元素; 若队列尾索引减去队列头部索引大于k-1,弹出队列头部元素 //暴力方法 vector<int> P_239::maxSlidingWindow(vector<int>...原创 2019-08-04 17:38:01 · 175 阅读 · 0 评论 -
LeetCode 字符串解码394
1.题目描述 2.代码 class Solution { public: string decodeString(string s) { stack<string>strings; stack<int>nums; string res = ""; int times = 0; ...原创 2019-09-08 11:18:30 · 120 阅读 · 0 评论 -
动态规划(一)
目录 1.不同的二叉搜索树 2.最长回文字串 3.单词拆分 1.不同的二叉搜索树 思路:以j为节点,左边有j-1个比j小的,右边有i-j个比j大,那么以j为节点的二叉树情况有dp[j] = dp[j - 1] * dp[i - j] class Solution { public: int numTrees(int n) { if (n == 0) ...原创 2019-09-16 15:17:34 · 67 阅读 · 0 评论 -
前缀树
目录 1、实现Trie(前缀树) 2、单词替换 1、实现Trie(前缀树) struct TrieNode { bool isWord; vector<TrieNode*>children; TrieNode() : isWord(false), children(26, nullptr) {}; }; class Trie { private: TrieN...原创 2019-09-18 11:38:23 · 116 阅读 · 0 评论 -
二分查找
目录 1.搜索旋转排序数组 2.在排序数组中查找元素的第一个和最后一个位置 1.搜索旋转排序数组 class Solution { public: int search(vector<int>& nums, int target) { if (nums.size() <= 0) return -1; ...原创 2019-09-21 15:47:34 · 68 阅读 · 0 评论 -
单调栈
目录 1.单调栈 2.leetcode题目 1.单调栈 单调栈解决的问题:O(n)时间复杂度解决数组中每个数的左右第一个比它大(或小)的数。 解决思路:例如寻找一个数组中每个数左右第一个比它大的数。 维护一个单调栈,若当前的栈为空或者当前元素小于等于栈顶元素,则放入当前元素的下标至栈顶;若当前的元素大于栈顶元素(说明此时可以找到栈顶元素的左右第一个比它大的值),则弹出栈顶元素,栈顶元素的...原创 2019-09-23 16:04:39 · 118 阅读 · 0 评论