
算法
文章平均质量分 82
下一秒,待续
下一秒
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法之其他题型总结
0.输入格式处理 Python3 n = int(input()) for _ in range(n): # ... 1.如何判断一个自然数是否是某个数的平方 思路一:后n/2个数肯定不是平方,只需要对前一半的数进行判断即可。 思路二:使用二分查找,1-n有序进行查找即可。 2.如何判断一个数是否为2的n次方 思路一:对每一位进行判断即可。 思路二...原创 2019-06-02 19:02:18 · 388 阅读 · 0 评论 -
算法之栈和队列
1.设计一个有getmin功能的栈 思路:创建一个栈叫minstack,维护一个从栈底大栈顶的递减栈。 ps:压栈时原栈正常压入,在minstack栈中如果value大于栈就不压入,如果小于等于就压栈。这样就维护了一个从底到顶的降序序列 ps:出栈时原栈正常出栈,在minstack栈中如果出栈的元素大于栈顶就不出,如果等于栈顶元素就出栈,是不可能小于栈顶元素的因为栈顶就放的是最小元素。 2...原创 2019-05-31 23:43:02 · 482 阅读 · 0 评论 -
算法之海量数据处理
1.散列分治或MapReduce 这种题目很多,大多都相似一通,针对数据特别多的情况下,一般可以选择MapReduce或者散列分治这两种方式其实思想很相似的只有些许不同;针对数据量不大的情况下可是直接加载进内存来的可以使用Trie树,红黑树这一套,hash表都可以使用。 寻找共同的URL 给定两个a和b文件,各存放50亿个URL,每个URL占64字节,内存限制4GB,请找出a和b文件中共同的...原创 2019-10-20 00:26:41 · 285 阅读 · 0 评论 -
算法之递归与动态规划
1.最大连续乘积子数组(数组中的元素有正数有负数) 解法一:暴力法 两个for循环确定边界,可以找出所有数组的乘积然后在进行比较。时间O(N的平方) 解法二:动态规划 设f(i)是以第i个元素结尾的最大连续子数组。由于有负数的存在,那么f(i-1)就需要维护一个最大值和一个最小值(为负数),只有这样才能求出f(i)的最大。时间O(N),空间也可以常量,因为每一次的计算只需要用到上一次的信息...原创 2019-05-31 13:35:12 · 884 阅读 · 4 评论 -
算法之查找题型总结
1.有序数组的查找 二分法:每次循环找middle元素与查找元素比较,确定元素在左半边还是在右半边。要注意编程的准确性,ringht=n-1,while的判断条件就为left<=right,而且更新right时right = middle-1,left=middle+1。 2.行列递增矩阵的查找 解法一:分治法 在对角线上进行二分,如果在某两个数之间那么可以抛弃左上和右下两个矩阵,而...原创 2019-05-31 23:43:16 · 271 阅读 · 0 评论 -
算法之树题型总结
2.最近公共祖先 给定两个节点,查找这两个节点的最近公共祖先。 是二叉查找树:划分区间,当前节点的值会落在区间的中间还是左边还是右边,进行后序遍历即可。 不是二叉查找树但是二叉树且节点有父节点:转化成两条链表找第一个公共节点。 不是二叉查找树但是二叉树且节点无父节点:递归的找到两个节点找到后,返回目标节点,如果第一次该节点的左右子节点返回目标节点的话,那么这个节点就是最近公共祖先。 是多...原创 2019-05-30 20:19:30 · 580 阅读 · 1 评论 -
算法之数组题型总结
1.寻找最小的K个数 解法一:全部排序 使用快排,可以O(1)找到前k个数。时间O(NlogN) 解法二:部分排序 先拿到前k个数,然后找到这K个数中最大的那个,遍历剩余的n-k个数与元素比较;如果k个数中的元素大于遍历元素就替换,然后更新k各元素中最大值;如果小于等于遍历元素向后走。时间O(kN)! 还有一种k次冒泡排序/选择排序,因为这两个排序每次都可以确定一个当前最小元素。时间O(...原创 2019-05-27 18:56:01 · 484 阅读 · 1 评论 -
算法之链表题型总结
1.在单链表中删除倒数第K个节点 思路一:直接遍历一遍求出链表的长度,然后找到第N-K个节点之前的一个节点,因为要删除。 思路二:画图发现,我们要走到N-K这个位置,使用双指针,先让一个链表走K步,然后两个指针一块移动即可。但是要找到的是前一个所以要另做处理。 ps:一定注意要验证K的正确性。 2.删除链表的中间节点 思路:双指针,一个每次走两步,一个每次走一步即可。(画图看) 扩展:...原创 2019-05-30 11:24:10 · 676 阅读 · 0 评论 -
算法之字符串题型总结
1.字符串的旋转 给定abcdef,例如把字符串的前三个字符移动到后面。形如:defabc! 解法一:暴力法 每次所有字符串向前移动一位,移动m次即可。但是复杂度为O(mn) 解法二:三步反转法(类比结构的对称性) 通过m把字符串分割成两个字符串,然后对这两个字符串分别反转。最后在对字符串整体反转。 例:ma要移动到后面去,ma.....|....am 根据对称性:am.......|...原创 2019-05-18 19:06:39 · 424 阅读 · 0 评论 -
读(程序员的数学 2 概率统计)-记录
目录: 第一章:概率的定义 (随机变量,概率分布) 第二章:多个随机变量之间的关系 (联合概率,边缘概率,独立性,条件概率以及在贝叶斯上的应用) 第三章:离散值的概率分布 (期望,方差,标准差,大数定理) 第四章:连续值的概率分布 (概率密度函数,概率分布函数以及随机变量的变换,联合概率分布函数,高斯分布以及中心极限定理) 第五章:协方差矩阵、多元正态分布与椭圆 (协方差和相关...原创 2019-05-01 16:33:27 · 1797 阅读 · 0 评论