刷题
西堂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 · 445 阅读 · 0 评论 -
C++实现LRU Cache
1、算法思路:put操作思路:用一个双向链表和一个哈希表;每添加一个(key, value),先判断是否在哈希表中存在,如果存在,那么删除哈希表中的键值对和双向链表中的该元素;再往双向链表头部增加添加的(key, value)和哈希表中增加(key,value);最后判断是否超过capacity,若超过则弹出链表尾部元素和删除哈希表中该键值对。优化:哈希表中保存<...原创 2019-08-02 16:50:14 · 493 阅读 · 0 评论 -
滑动窗口内最大值
1、算法思路双端队列方法:队列头部一直都是当前窗内的最大元素下标deque1为空或队列尾元素大于等于当前元素,入队列;队列尾元素小于当前元素,弹出队尾元素,确保队列头部是最大元素;若队列尾索引减去队列头部索引大于k-1,弹出队列头部元素//暴力方法vector<int> P_239::maxSlidingWindow(vector<int>...原创 2019-08-04 17:38:01 · 200 阅读 · 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 · 139 阅读 · 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 · 87 阅读 · 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 · 174 阅读 · 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 · 84 阅读 · 0 评论 -
单调栈
目录1.单调栈2.leetcode题目1.单调栈单调栈解决的问题:O(n)时间复杂度解决数组中每个数的左右第一个比它大(或小)的数。解决思路:例如寻找一个数组中每个数左右第一个比它大的数。 维护一个单调栈,若当前的栈为空或者当前元素小于等于栈顶元素,则放入当前元素的下标至栈顶;若当前的元素大于栈顶元素(说明此时可以找到栈顶元素的左右第一个比它大的值),则弹出栈顶元素,栈顶元素的...原创 2019-09-23 16:04:39 · 163 阅读 · 0 评论