![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法acm
文章平均质量分 76
予亭
活泼开朗,爱好广泛。
展开
-
背包问题九讲的总结
背包问题的奇妙设计原创 2022-01-16 18:06:44 · 186 阅读 · 0 评论 -
5分钟一个算法编程小点:顺序去重
题目:316. 去除重复字母 要求去重字符串中的字符,还要保留字符原本中的顺序,第一点好理解,第二天不太好理解,什么意思呢? bcabc b、c 要去掉一个,保留原本的顺序,得到最小的字符串,应该是后缀三个字符 :abc bcadbc 答案是adbc,这里主要在d的位置已经固定,不能打乱原本字符在输入字符中的位置 解法:数组+栈 这里涉及到两个数组,一个数组来标示那些已经字符访问过了,另一个字符来标示字符数量,通过栈的特性:后进先出的特点,从前到后比较数据,如果碰到字符比较小的数据,栈就自动pop字符,原创 2020-12-20 21:33:14 · 124 阅读 · 0 评论 -
5分钟一个算法编程小点:链表判断是否有环,并且给出环的位置
问题:链表 链表结构,判断是否有环 解决方法:快慢双指针 经典的双指针方法,一个指针每次向后移动两个节点,一个指针每次向后移动一个节点,如果链表有环,最终两个指针会碰到一起, 主要问题:有环链表,能找出环的切入口节点吗? 也是利用快慢双指针,不过技巧在于,第一次相遇后,如果从头节点再来一个慢指针,两个慢指针相遇的节点就是入口节点,有点抽象,我们来形象描述一下,如下图: 这是第一次相遇的时候,我们根据快慢指针可以得到公式: 2∗(k+m)=k+L+m2k+2m=k+L+mk=L−m \begin{align原创 2020-10-11 14:22:41 · 172 阅读 · 0 评论