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