
算法学习篇
文章平均质量分 57
算法的魅力真是无穷的~算法虐我千千万万遍,我待算法为初恋
dxgzg
梦想能成为一名linuxC 服务端开发程序员
展开
-
红黑树学习
维基百科简书的参考博客上述我觉得是可以参考的维基百科红黑树规则节点是红色或黑色。根是黑色。所有叶子都是黑色(叶子是NIL节点)。每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。总结一下,理解看上面的两篇文章。总结方便自己日后回忆插入结点什么时候变色,什么时候旋转?每个插入点都是红色。当插入结点的父节点是黑色的时候直接插入即可,因为黑色数量还是一样的。当父节点是红色,叔叔结点原创 2021-05-09 18:11:58 · 110 阅读 · 0 评论 -
二分算法总结
慢慢总结一类是有序的区间查找数字一类就是隐藏一个有序区间,让你去找lc1011题目链接最小值是货物里的最大值(因为货物不能拆分成小包裹),最大值是所有货物的总和,很明显这个区间是有序的,就是在这个区间里找出一个临界值,这个最小的临界值满足5天就能把货运完。class Solution {public: int shipWithinDays(vector<int>& weights, int D) { // 最小值是货物的最大值,最大值是货物的总和,原创 2021-04-26 14:13:38 · 121 阅读 · 0 评论 -
动态规划的学习—从暴力递归到动态规划
目录lc343解题思路代码lc343题目链接解题思路我认为学习动态规划最好的办法就是从暴力递归到动态规划,上来就一个状态转移方程,我想绝对大多数人都是看不懂的。这道题如何暴力递归呢?暴力递归如下,选择是当前这样的做法最大,还是递归去求解之后做法更大,然后进行比较。代码class Solution { int dfs(int n){ if(n == 2){ return 1; } int ans = -1;原创 2021-03-20 17:54:58 · 186 阅读 · 0 评论 -
最近一些算法题的总结
目录摩尔投票法把东西想成槽题目链接如果用哈希表做的话就十分的简单了,记录地址即可。不过O(1)内存的话就不考虑哈希表了。我们可以这么想这个问题,a + b + 重复路段 = b + a + 重复路段。这是相交的情况。不相交的情况是a + b = b + a。所以我们很容易用双指针来解决这个办法了,谁走到了尾部就换到下条路,换着走一次,路径总和是一样的。class Solution {public: ListNode *getIntersectionNode(ListNode *headA原创 2021-03-14 09:36:02 · 127 阅读 · 0 评论 -
C++实现一颗前缀树
lc原题-208,在我去年学习算法的时候一直觉得前缀树好厉害,没有去实现,花了几个小时研究了研究,记录一下自己写的代码。这是我的第一版代码,数组的长度根据题目要求固定死了,这个操作很像链表,头结点记录他的小弟们,通过一个又一个next指针去找剩下的结点。以什么开头就看看path是否大于0,大于0就说明有以这个开头的字符串,判断有没有这个单词就看end是否大于0。多一个path和end好处是什么呢?如果不单纯问你是否有以这个开头的,而是让你返回以这个开头的个数的时候,那么path的作用就体现出来了,直接返回原创 2021-02-21 14:41:13 · 175 阅读 · 0 评论 -
旋转矩阵解法
看了左神的算法,感觉自己的算法的能力大增,嘻嘻原创 2020-11-30 20:42:54 · 590 阅读 · 0 评论 -
LeetCode 116填充每个节点的下一个右侧结点指针
题目链接给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节原创 2020-10-15 16:30:18 · 136 阅读 · 0 评论 -
Leetcode75颜色分类
我的力扣主页题目链接这道题一看就是一道双指针的问题,可惜我想到了双指针没想到怎么做,看了官方的动图明白了怎么做这道题,动图可以看下官方题解里的动图,优快云里面放不了官方题解建议看一遍动图,代码就很好写出来了代码如下,和官方实现的略有不同,想法是一样的,毕竟我是看着官方动图写出来,讲解一下我对这道题的思路:有两个变量,一个指向下一个存0的地方(p0),一个指向下一个存1的地方(p1)。当nums[i] == 0的时候就要把该0移到p0的位置上,并且p0要往后挪一位。其次还要注意一点的是,如果p0和p原创 2020-10-07 15:01:32 · 128 阅读 · 0 评论 -
Leetcode 538把二叉搜索树转换为累加树
题目链接LeetCode做了快400道题,但是大多数的题目做完一段时间再去看就发现忘记了思路,所以自己打算把一些不一样的题目的写在自己的博客上,以便自己在没事的时候看一看、回顾回顾。如果还能帮到您那将是荣幸之至!题目的描述,看见简单题一般我都是大刀阔斧的去做,但这道题还真是有点意思。我一开始是遍历这个搜索树的中序遍历,用前缀和累加一下,在寻思用前序和中序遍历新建这个二叉搜索树,但我转念一想这不可能是简单题所要的思路,翻了翻答案,发现这道题是道脑筋急转弯的题目,不要被他的外表所迷惑了。不要定向思维认为这原创 2020-09-21 10:05:12 · 159 阅读 · 0 评论