
算法题
文章平均质量分 67
pipi的奇思妙想
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode题目-战争和摩尔投票有什么关系?
微信搜索:pipi的奇思妙想 解锁更多有趣的动画~ 这是一道leetcode上的题目,题目链接戳:多数元素 题目描述 解法 这道题的解法有很多,在这里解释一种比较特别的方法:摩尔投票法。 这里有个小视频说明了摩尔投票~ 题目中我们需要查找的数字超过数组长度的一半,也就是说,要查找的数字target的个数会超过其他数字个数。 假设不同数字相互抵消,那么最后剩下的数字,就是我们要找的多数元素。 我们可以把这个过程打个比方,比如现在多军对峙,假设阵营A士兵人数比其他方的人数都多,阵营A士兵能以一杀一,那么只要原创 2021-05-13 11:50:43 · 292 阅读 · 0 评论 -
超可爱!动画教你如何删除链表的倒数第n个结点
这是leetcode上一道题目: https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/comments/ 对于链表类题目,对某一个特定索引的元素进行操作往往会成为增加时间复杂度的瓶颈,因此如何使用尽可能少的遍历次数寻找到所要操作的元素就成为减少时间复杂度的关键。 比如这道题,由于我们不知道链表的长度,并且只能从头部开始遍历,假设我们不运用任何技巧,两次遍历可以解决这个问题。 第一次遍历可以得知链表的长度L,第二次遍历从头找到L原创 2020-06-14 19:03:38 · 426 阅读 · 0 评论 -
教你用浪漫的方式找到两个单链表相交的起始节点
你以为我打算讲算法,其实我准备讲爱情… 故事的开始,是一道算法题: 题目: 如何找到两个单链表相交的起始节点。 要求: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 题目链接:https://leetcode-cn.com/problems/intersection-...原创 2020-04-19 18:56:29 · 499 阅读 · 0 评论 -
以前我不懂并查集,直到看了古惑仔...
今天我们来讲讲并查集 什么是并查集?事实上并查集并不难,pipi用一个生动的例子带你了解并查集。 古惑仔之有趣的并查集~ 在这个视频例子中, 我们主要需要解决几个问题: 1.如何判断两个小弟(小a和小c)是否在同一个帮 2.如何合并两个帮派 我们来解析例子: 我们通过例子从以下...原创 2020-03-22 12:45:01 · 584 阅读 · 0 评论 -
一个视频让你明白如何判断一个链表是否有环,绝对生动形象
这其实是一个披着算法题外衣的xxxx视频… 题目:如何判断一个链表是否有环 题目链接:https://leetcode-cn.com/problems/linked-list-cycle/ (题目描述如标题…相信你一看就知道了,就不放题目描述了…) 解法一:(非o(1)空间复杂度解法) 遍历链表,每次遍历到一个新的结点时,判断该结点是否在集合set中,如果在集合set中说明链表有环,否则记录在se...原创 2020-03-12 22:56:02 · 387 阅读 · 0 评论 -
leetcode122题目:贪心算法
题目: 给出每天股票的价格列表,求买卖股票的最大收益。 限制:每天只能持有1股,可以买进和卖出无数次 leetcode122题目 贪心算法介绍: 关键总结: 在对问题求解时,总是做出在当前看来是最好的选择 与动态规划的区别: 贪心算法对子问题的解决方案都做出选择且不能回退,而动态规划则是保存以前子问题的结果,并根据以前的结果对当前的问题进行选择,相当于相对贪心算法动态规划有回退功能。 适用场景:...原创 2020-03-07 21:24:09 · 492 阅读 · 0 评论 -
leetcode题目:求一个非负数n的平方根
题目: leetcode69题 求一个非负数n的平方根 算法思路: 核心思想:二分查找 在1到n中进行查找,每次取中间元素mid求平方,如果求的平方值等于n或者求的平方值小于n且mid+1的平方值大于n,说明找到了目标值;如果mid+1的平方值大于n,说明应该在左边部分查找,否则在右边部分继续查找 代码如下: class Solution(object): def mySqrt(self,...原创 2020-03-07 21:23:32 · 789 阅读 · 0 评论 -
leetcode题目:众数相关
题目: leetcode169 给定一个长度为n的数组,求其中出现次数超过n/2次的元素,题目规定该元素必定存在。 算法思路 方法一: 以数组元素为key,出现次数为value,遍历数组,将每个元素出现的次数记录在字典中,然后求字典中统计次数最大的key值。 时间复杂度为o(n),用到了字典,所以空间复杂度也是o(n) 代码如下: class Solution(object): def m...原创 2020-03-07 21:22:43 · 393 阅读 · 0 评论 -
leetcode题目:寻找二叉搜索树中两个结点的最近公共父结点
寻找二叉搜索树的两个结点的最近公共父结点 一、二叉搜索树定义 是指一棵空树或者具有下列性质的二叉树: 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值; 任意节点的左、右子树也分别为二叉查找树; 没有键值相等的节点 参考链接:维基百科 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img...原创 2020-03-07 21:21:09 · 633 阅读 · 0 评论 -
数独的一种实现方法
本文首发于我的简书账号,最近迁移到csdn博客、 最近想学学算法,无意中从书中看到对一些小游戏的分析和算法实现,其实也是蛮有意思的。 今天我们来讲一讲数独。 首先我们来简单介绍下数独的规则。 标准的数独是一个由99个1-9数字组成的矩阵,其中矩阵中的数字需满足: 1)每个数字所在的每一行、每一列的数字都不能重复。 2)每个数字所在的33矩阵的数字都不能重复。 3)所填的数字范围需为1-9的整数 ...原创 2020-03-07 14:50:10 · 1841 阅读 · 0 评论 -
leetcode上的题目:两数之和
本文首发于我的简书账号,最近迁移到csdn博客 leetcode上的一道题目: 两数之和:https://leetcode-cn.com/problems/two-sum/ 两数之和 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 n...原创 2020-03-07 14:41:52 · 440 阅读 · 0 评论 -
一个视频让你明白什么是递归
什么是递归?这里有一个形象的解释~ 电影院里,有人问你你坐在第几排,你懒得数,于是你问坐在你前一排的人他坐在第几排,这样在他回答的排数上加一你就可以知道你坐在第几排了。坐在你前一排的人也懒得数,于是就继续去问坐在他前一排的人相同的问题,这样一直下去直到问到坐在第一排的老哥,第一排的老哥当然会告诉你他坐在第一排。于是这个消息会从第一排开始一排一排再传回到你这里,当然每个接受到这个消息的人会在这个结果...原创 2020-03-06 23:50:35 · 1051 阅读 · 0 评论 -
剑指offer上关于树的题目汇总
树的题目通常可以用递归解决,递归过程的本质是栈,因而理论上递归也可以用循环加堆栈(或者队列)解决 关于递归 递归非常容易让人思路混乱,看到网上有一种思路觉得很有用,就是假设子问题已经完美处理,你只需思考最终问题的处理思路,子问题的处理思路和最终问题的处理思路一样,这样思路就会清晰很多。 以下代码示例均为python版本 题目一:从上往下打印二叉树 题目描述: 从上往下打印出二叉树的每个节点,同层节...原创 2019-08-23 14:16:55 · 389 阅读 · 0 评论