![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
专注于PAT与leetcode算法方面,企图总结出自己规律未遂的苦逼专栏
妈咪妈咪哄
贪财好色,一身正气。
展开
-
[算法积累] [笔试] [字符串] [11] 3. 无重复字符的最长子串
前言死尸上线,继续学习。学习使我快乐。题目链接无重复字符最长字串思路看到第一眼想到的是KMP,第二眼是动态规划。没想到看走眼了。这是一个典型的滑动窗口问题,就像这样。下面我们来定义一下这个窗口的规则。如果Right指向的指针与之前的字符没有重复,则将其右移如图,就可以Right指针从b移动到c如果Right 与之前的产生了重复,记录长度。将Left 依次右移直到不包含Right所指向的这个重复字符。如图,Left经过a,b,c 之后才会把前一个c排除在外重复上面的步骤,如果发现原创 2020-05-17 21:08:11 · 129 阅读 · 0 评论 -
[算法积累] [笔试] [贪心] [10] 求最低满意度
题目一群人排队,三个属性。pos位置,ai表示第i个人之前的系数,bi表示第i个人之后的系数。value值是前后求得的和.思路居然可以通过对求和公式化简,得到i的位置只与bi与ai的差值有关。直接通过(bi-ai)排序即可。。。。奇怪的知识又增加了。。。。...原创 2020-04-12 20:12:22 · 216 阅读 · 0 评论 -
[算法积累] [leetcode] [字符串] [9] 1410. HTML 实体解析器
前言参加了周赛,感觉学到的东西不是特别多。下午参加了快手的笔试,明明很简单的,很简单啊啊啊啊啊。卡在第三题,结果其他都没怎么顾,这真的是个坏习惯。每次想着,一定要做出一道完整的题目在考试的时候真的是愚蠢至极。思路其实就是替换字符串.在C++中有replace函数。replace(起始坐标,替换的长度,要替换的字符串)string replaceStr(string &str,st...原创 2020-04-12 19:56:09 · 105 阅读 · 0 评论 -
[算法积累] [leetcode] [字典树] [8] 386. 字典序排数
前言没想到都已经第8篇了,虽然自己还是那么菜。这个题目跟上面一个440的题目类似.我当时心里还想着,440困难的我都拿下了,还怕你这个中等。结果写了两个小时。。。。。。(弱鸡,呸)思路结合440.比440简单,我一直想用440一样的方式去解,但是那个太抽象了。这个题其实就是一个十叉树的前序遍历。只不过,根节点的值有九种可能,就是1-9.这里需要注意的就是,由于栈是先进后出,所以需要倒着入...原创 2020-04-10 22:22:38 · 98 阅读 · 0 评论 -
[算法积累] [leetcode] [第k大/字典树] [7] 440.字典序的第k小数字
1.头脑风暴首先解析题目,第k大元素或者第k小元素的思路应该是:优先级队列快排字典序,能够想到的是:字典树其他的头脑风暴:基数排序这个题目的思路有点像字典树。字典树是每一个节点下面有26个字符。这个题目是每个节点下面有0-9十个节点。是一个抽象的十叉树.2.思路由于是字典序,按位比较,前缀小的放在前面。因此我们其实只需要找到这个第k个元素到底是在哪个子树下面就可以...原创 2020-04-09 21:51:05 · 481 阅读 · 0 评论 -
[算法积累] [leetcode] [字符串/回溯/动态规划] [6] 22.括号的生成
思路1.回溯使用计数器来记录(和)的个数,如果(比n小,就加入一个(.如果)的个数比(的小,就可以加入右括号.class Solution {public: //num表示(的个数 void helper(vector<string>& ans, string& cur, int open, int close, int n){ ...原创 2020-04-09 21:48:14 · 103 阅读 · 0 评论 -
[春招][js][字符串匹配][3] 使用js进行字符串匹配
前言其实就是正则表达式.被最近的笔试打击的不行,今天这个明明早上就看过,下午就忘了。。。。。原题给出字符串s,匹配串p,求两者是否匹配.eg1.var s = 'abcbc'var s1 = 'ac'var p = 'a(bc)*c'则s返回false,s1返回true解答//就是没有想起来怎么用字符串转.....function f(s,p){ Regex patte...原创 2020-04-03 20:50:48 · 82 阅读 · 0 评论 -
[算法积累] [leetcode] [查找后缀/前缀] [5] 820. 单词的压缩编码
0.前言写了整整一个上午,从8点50到11点半。我果然还是太菜了。继续加油吧!!写在这里,方便回顾。1.思路本题共有三种思路.1.1暴力使用set存储所有的字符串。之后遍历每个字符串的子串,如果其在set中存在,则将其移除。 unordered_set<string> list(words.begin(),words.end()); for(auto item:lis...原创 2020-03-28 11:48:39 · 125 阅读 · 0 评论 -
[算法积累] [leetcode] [广搜/数学] [4] 365.水壶问题
前言花了一个半小时,还是没做出来,果然太菜了。说实话,自己还是有点不明白,但是尽力把这个讲清楚把。希望对你有点帮助。记忆化搜索将所有的状态添加到队列中,使用广度遍历。这里可以学习的地方就是使用hash值的方式来存储状态,这个我个人感觉是深搜,广搜的福星。几乎可以匹敌dp了。using PII = pair<int,int>;class Solution { public:...原创 2020-03-21 11:51:34 · 120 阅读 · 0 评论 -
[算法积累] [leetcode] [排序] [3] 求第k大算法 C++
暴力直接使用sortsort(arr.begin(),arr.end());堆/优先级队列依次弹出即可,这种方法也适合求第k个最大的元素,且要求每个元素都不相同。 int num = 0; vector<int> res(k, 0); //初始化为有k个空间,默认值为0的数组 if(k == 0) return res; priority_queue<int,v...原创 2020-03-20 11:39:41 · 123 阅读 · 0 评论 -
[算法积累] [剑指offer] [位运算] [2] 二进制中1的个数
原题链接位运算亮点/所学对10进制使用-1的操作,最右边的1记为x.使x位为0,使0~x-1位变为1与自身&运算,将x之后全部变为0疑惑如果是负数怎么办?负数按照补码计算的话,在数值上等于2^k+原来的数,所以不影响结果.例如-2 补码的十进制就是254 = 256+(-2)代码class Solution {public: int Numbe...原创 2020-03-17 21:55:54 · 67 阅读 · 0 评论 -
[算法积累] [剑指offer] [字符串] [1] 替换空格
原题连接替换空格亮点/所学char* 可以通过string的构造函数直接创建,string 转char* 则需要使用strcmp()string find函数,insert函数,erase函数的使用代码class Solution {public: void replaceSpace(char *str,int length) { string s(str); ...原创 2020-03-17 21:40:23 · 63 阅读 · 0 评论