![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
从零开始学算法(Java)
文章平均质量分 88
老$¥
这个作者很懒,什么都没留下…
展开
-
(Java)算法基础6:图/贪心算法(带模板上考场,模板一定滚瓜烂熟解决考场订制)
有向图有箭头,无向图无箭头如下图原创 2022-05-27 10:53:20 · 182 阅读 · 0 评论 -
(Java)算法基础5:二叉树套路(递归套路解决一切树型DP问题,树型DP就是面试过程中最难题目)
二叉树基础知识(包括递归实现先序,中序,后序遍历)下面这些数字就是这个二叉树的递归序理解递归序——一下就理解了递归二叉树三种遍历非递归遍历任何递归都可以改成非递归递归函数无非就是系统帮忙压栈,不让系统压,自己压就行了,用栈。先序遍历先把头结点放入栈里,然后就是固定流程固定流程:从栈中弹出一个节点car,处理car,然后把car左右孩子(先右后左)压到栈里去(如果有的话),周而复始stack用法void preorder(ListNode* head){ if(head .原创 2021-08-01 11:43:49 · 514 阅读 · 0 评论 -
(Java)算法基础4:Hash/有序表/链表
注意:Hash表在使用的时候认为时间复杂度都是常熟级别,数据量再大也是常数时间返回值,只是比较大。HashMap,带key和value,以key来组织如上图,put方法既是新增,也是更新value,首先让加了一条记录叫1zuo,第二条更新,将1所对应的value改为chengString类型直接把内存地址一个拷贝放到hash(一律只占八位),内存地址作为key。如下图,可以remove一个key,会连同这个key对应的value一起删掉get用来查询某一个key存在跟不存在,也可以把key对.原创 2022-03-28 22:13:52 · 840 阅读 · 0 评论 -
(Java)算法基础3:堆排序/比较器/桶排序排序总结
堆结构(重点)——一种特殊完全二叉树O(logN)完全二叉树:或者是满的,在不满的最后一层也是从左往右依次变满的。堆逻辑上就是完全二叉树实现完全二叉树方法:把数组必须从零出发的连续一段可以对应成完全二叉树size:从零出发的连续一段。size=7表示要把数组从0到7七个数作为数组对应所以根据这样,就可以把从零出发连续的一段,脑补成一段完全二叉树。所以:怎么把数组连续出发的一段,实现成一个堆?如下图,当6插入,它要找5比较大小(即和其父节点比较大小),找到父节点的方法在上图(i-1)/2原创 2022-03-27 13:31:45 · 736 阅读 · 1 评论 -
(Java)算法基础2:递归/归并排序/荷兰国旗/快速排序
递归求中点位置,一般来说mid = (L+R)*0.5,这样写有一些问题如果数组长度比较大,L+R可能会溢出,这样算出来的mid是不对的。所以可以这么写mid = L + (R-L)*0.5//下面为右移一位(等同于除2),等同于上面mid = L + (R-L)》》1如下图就是递归的底层调用,相当于栈、树的后序遍历p(0,2)相当于在0到2范围内求最大值p(3,5)相当于在3到范围内求最大值p(0,5)要调用要先调用p(0,2),p(3,5)压入栈中,同理,p(0,2)要先调用原创 2022-03-27 10:33:06 · 1177 阅读 · 0 评论 -
(Java)算法基础1:时间复杂度/位运算/选择,冒泡,插入排序/对数器/二分
时间复杂度下图就是选择排序时间复杂度,N平方,O(N^2)时间复杂度就是常数操作数量的表达式:aN^2+bn+c,只要最高阶项.为什么会只算N平方,因为都是考虑数据量起来以后的情况。选择排序与冒泡排序选择排序比方一个数组【4,2,3,1】,将其按照从小到达排列其实就是先从第一个开始遍历,找到一个最小值放到首位,然后从第二个开始遍历,找到第二小的数放到第二位,以此类推package class01;import java.util.Arrays;public class Code0原创 2022-03-24 16:36:52 · 1314 阅读 · 0 评论